<chapter id="property_reference"><title>Property Reference</title>

<sect1 id="account"><title>account &lt;id&gt; &lt;name&gt; &lt;type&gt;</title>

<para><simplelist type=horiz columns=2>
<member>id:</><member><link linkend="id">ID</link></>
<member>name:</><member><link linkend="string">STRING</link></>
<member>type:</><member><link linkend="id">ID</link></>
</simplelist></para>

<para>Declares an account. Accounts can be used to calculate costs of tasks
or the whole project. Account declaration may be nested, but only the
top level accounts may have a type attribute specified. All
sub-accounts inherit this type. The type may be
<computeroutput>cost</computeroutput> or
<computeroutput>revenue</computeroutput>.</para>

<para>See also: <link
linkend="htmlaccountreport">htmlaccountreport</link></para>

<para>Optional attributes:</para>

<sect2 id="account_account"><title>account &lt;id&gt;
&lt;name&gt;</title>

<para>Accounts may be nested. An account that has sub-accounts may not have
a balance or a kotrusid.</para>

</sect2>
<sect2 id="account_credit"><title>credit &lt;date&gt; &lt;description&gt;
&lt;amount&gt;</title>

<para><simplelist type=horiz columns=2>
<member>date:</><member><link linkend="date">DATE"</link></>
<member>description:</><member><link linkend="string">STRING</link></>
<member>amount:</><member><link linkend="real">REAL</link></>
</simplelist></para>

<para>Credits the specified amount to the account at the specified date. The
description should contain some information about the reason for the
transaction.</para>

</sect2>
<sect2 id="account_kotrus_id"><title>kotrusid &lt;id&gt;</title>

<para><simplelist type=horiz columns=2>
<member>id:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>The KoTrus <link linkend="id">ID</link> of the account (cost object).
This is a special reserved keyword.</para>

</sect2>
</sect1>
<sect1 id="csvaccountreport"><title>csvaccountreport &lt;filename&gt;</title>

<para><simplelist type=horiz columns=2>
<member>filename:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>Optional attributes:</para>

<sect2 id="csvaccountreport_accumulate"><title>accumulate</title>

<para>If this attribute is specified the values in the calendar columns are
accumulated over the reported interval.</para>

</sect2>
<sect2 id="csvaccountreport_columns"><title>columns
&lt;colid&gt; [, &lt;colid&gt;]</title>

<para><simplelist type=horiz columns=2>
<member>colid:</><member><link linkend="id">ID</link></>
</simplelist></para>

<para>Specifies which columns should be included in the task report. The
following values for colid are available:</para>

<para><simplelist type=horiz columns=2>

<member><computeroutput>no</computeroutput></>
<member>The task index</>

<member><computeroutput>id</computeroutput></>
<member>The global <link linkend="id">ID</link> of a
task</member>

<member><computeroutput>name</computeroutput></>
<member>The name of a task, resource, or
account</member>

<member><computeroutput>total</computeroutput></>
<member>Total accumulated values</>

<member><computeroutput>daily</computeroutput></>
<member>A day-by-day calendar view of the accounts</>

<member><computeroutput>weekly</computeroutput></>
<member>A week-by-week calendar view of the
accounts</>

<member><computeroutput>monthly</computeroutput></>
<member>A month-by-month calendar view of the
accounts</>

<member><computeroutput>quaterly</computeroutput></>
<member>A quarter-by-quarter calender view of the
accounts</>

<member><computeroutput>yearly</computeroutput></>
<member>A year-by-year calender view of the accounts</>

</simplelist></para>

</sect2>
<sect2 id="csvaccountreport_end"><title>end &lt;day&gt;</title>

<para><simplelist type=horiz columns=2>
<member>day:</><member><link linkend="date">DATE</link></>
</simplelist></para>

<para>The end date for the calender view.</para>

</sect2>
<sect2 id="csvaccountreport_rollupaccount"><title>rollupaccount
&lt;expression&gt;</title>

<para><simplelist type=horiz columns=2>
<member>expression:</><member><link
linkend="logicalexpression">LOGICALEXPRESSION</link></member>
</simplelist></para>

<para>Do not show sub-accounts of accounts that match the specified logical
expression.</para>

</sect2>
<sect2 id="csvaccountreport_hideaccount"><title>hideaccount
&lt;expression&gt;</title>

<para><simplelist type=horiz columns=2>
<member>expression:</><member><link
linkend="logicalexpression">LOGICALEXPRESSION</link></member>
</simplelist></para>

<para>Do not show accounts that match the specified logical
expression.</para>

</sect2>
<sect2 id="csvaccountreport_sortaccounts"><title>sortaccounts
&lt;criteria&gt;</title>

<para><simplelist type=horiz columns=2>
<member>criteria:</member><member><link linkend="sortingcriteria">
SORTINGCRITERIA</link></member>
</simplelist></para>

</sect2>
<sect2 id="csvaccountreport_start"><title>start &lt;day&gt;</title>

<para><simplelist type=horiz columns=2>
<member>day:</><member><link linkend="date">DATE</link></>
</simplelist></para>

<para>The start date for the calender view.</para>

</sect2>
</sect1>
<sect1 id="csvresourcereport"><title>csvresourcereport
&lt;filename&gt;</title>

<para><simplelist type=horiz columns=2>
<member>filename:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>Optional attributes:</para>

<para>See <link linkend="csvtaskreport">csvtaskreport</link></para>

</sect1>
<sect1 id="csvtaskreport"><title>csvtaskreport &lt;filename&gt;</title>

<para><simplelist type=horiz columns=2>
<member>filename:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>Generates a report of all tasks (excluding hidden and filtered) in
csv format. Multiple declarations of csvtaskreport can be made to
generate several different reports with one run of TaskJuggler.</para>

<para>Optional attributes:</para>

<sect2 id="csvtaskreport_barlabels"><title>barlabels
&lt;mode&gt;</title>

<para><simplelist type=horiz columns=2>
<member>mode:</member><member>Can be any of the following
values:</member>
</simplelist></para>

<para><simplelist type=horiz columns=2>

<member><computeroutput>empty</computeroutput></member>
<member>Do not show any values on calendar bars.</member>

<member><computeroutput>load</computeroutput></member>
<member>Show task or resource load on calendar bars.</member>

</simplelist></para>

<para> The default setting is to print load values on the bars.
</para>

</sect2>
<sect2 id="csvtaskreport_caption"><title>caption &lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>Defines the caption used for the report. The caption is printed right
above the task list.</para>

</sect2>
<sect2 id="csvtaskreport_columns"><title>columns
&lt;colid&gt; [, &lt;colid&gt;]</title>

<para><simplelist type=horiz columns=2>
<member>colid:</member><member><link linkend="id">ID</link></member>
</simplelist></para>

<para>Specifies which columns should be included in the task report. The
following values for colid are available:</para>

<para><simplelist type=horiz columns=2>

<member><computeroutput>completed</computeroutput></member>
<member>The percentage the task has been completed already. This is
either the value specified by <link
linkend="task_complete">complete</link> or a value computed according
to the current date (or the date specified by <link
linkend="project_now">now</link>) and the length, duration or effort.</member>

<member><computeroutput>cost</computeroutput></member>
<member>The accumulated costs of the task and its sub tasks</member>

<member><computeroutput>daily</computeroutput></member>
<member>A day-by-day calendar view of the tasks</member>

<member><computeroutput>depends</computeroutput></member>
<member>The task index of the tasks on which this task
depends</member>

<member><computeroutput>duration</computeroutput></member>
<member>The duration of the task</member>

<member><computeroutput>effort</computeroutput></member>
<member>The effort put into the task</member>

<member><computeroutput>end</computeroutput></member>
<member>The end date of a task</member>

<member><computeroutput>endbuffer</computeroutput></member>
<member>The percentage of the endbuffer</member>

<member><computeroutput>endbufferstart</computeroutput></member>
<member>The start time of the end buffer</member>

<member><computeroutput>flags</computeroutput></member>
<member>The list of flags assigned to the task or resource</member>

<member><computeroutput>follows</computeroutput></member>
<member>The task index of the tasks that depend on this task</member>

<member><computeroutput>hierarchindex</computeroutput></member>
<member>The hierarchical index of a task. The index is calculated from the
hierachical structure of the list as well as the start and end dates.
</member>

<member><computeroutput>hierarchno</computeroutput></member>
<member>The hierarchical number of a task. It is based on the order of
declaration.</member>

<member><computeroutput>id</computeroutput></member>
<member>The global <link linkend="id">ID</link> of a task</member>

<member><computeroutput>index</computeroutput></member>
<member>The index of a task. The index is calculated from the
hierachical structure of the list as well as the start and end dates.
</member>

<member><computeroutput>kotrusid</computeroutput></member>
<member>The KotrRUs ID of the resource</member>

<member><computeroutput>maxeffort</computeroutput></member>
<member>The maximum daily load wanted for the resource</member>

<member><computeroutput>maxend</computeroutput></member>
<member>The latest desired end date</member>

<member><computeroutput>maxstart</computeroutput></member>
<member>The latest desired start date</member>

<member><computeroutput>mineffort</computeroutput></member>
<member>The minimum daily load wanted for the resource</member>

<member><computeroutput>minend</computeroutput></member>
<member>The earliest desired end date</member>

<member><computeroutput>minstart</computeroutput></member>
<member>The earliest desired start date</member>

<member><computeroutput>monthly</computeroutput></member>
<member>A month-by-month calendar view of the tasks</member>

<member><computeroutput>name</computeroutput></member>
<member>The name of a task, resource, or account</member>

<member><computeroutput>no</computeroutput></member>
<member>The task index in the list. It starts with 1 and increases for
every listed item by 1.</member>

<member><computeroutput>note</computeroutput></member>
<member>The description of the task</member>

<member><computeroutput>priority</computeroutput></member>
<member>The scheduling priority</member>

<member><computeroutput>profit</computeroutput></member>
<member>The accumulated profit of the task and its sub tasks</member>

<member><computeroutput>projectid</computeroutput></member>
<member>The project id of the task</member>

<member><computeroutput>quarterly</computeroutput></member>
<member>A quarter-by-quarter calendar view of the tasks</member>

<member><computeroutput>rate</computeroutput></member>
<member>The daily rate of the resource</member>

<member><computeroutput>reference</computeroutput></member>
<member>A reference to a URL that contains further information.</member>

<member><computeroutput>resources</computeroutput></member>
<member>The names of the used resources</member>

<member><computeroutput>responsibilies</computeroutput></member>
<member>A list of all tasks indicies for which a resource is
responsible </member>

<member><computeroutput>responsible</computeroutput></member>
<member>The name of the resource responsible for a task</member>

<member><computeroutput>revenue</computeroutput></member>
<member>The accumulated revenue of the task and its sub tasks</member>

<member><computeroutput>scenario</computeroutput></member>
<member>The name of the scenario. This column is helpful when multiple
scenarios are shown in the table. See also <link
linkend="csvtaskreport_scenarios">scenarios</link>.</member>

<member><computeroutput>seqno</computeroutput></member>
<member>The task index in the order of declaration. Each
time a task declaration is completed, the sequence number is increased
by 1. </member>

<member><computeroutput>schedule</computeroutput></member>
<member>A detailed schedule of the allocations for the resource.</member>

<member><computeroutput>start</computeroutput></member>
<member>The start date of a task</member>

<member><computeroutput>startbuffer</computeroutput></member>
<member>The percentage of the start buffer</member>

<member><computeroutput>startbufferend</computeroutput></member>
<member>The end time of the start buffer</member>

<member><computeroutput>status</computeroutput></member>
<member>The current status of the task. This is derived from the
current date or the date specified by <link
linkend="project_now">now</link> and the degree of completion. The
degree of completion is either computed or has been specified by <link
linkend="task_complete">complete</link>.</member>

<member><computeroutput>weekly</computeroutput></member>
<member>A week-by-week calendar view of the tasks</member>

<member><computeroutput>yearly</computeroutput></member>
<member>A year-by-year calendar view of the tasks</member>
</simplelist></para>

<para>Optional attributes of each column:</para>

<para>All optional attributes that have a single text argument support
macro expansion. Contrary to the normal macro expansion, these macros
are expanded during the report generation. So the value of the macro
is being changed after each table cell or table line. Consequently
only build in macros can be used. To protect the macro calls agains
expansion during the initial file processing, the report macros must
be prefixed with an additional <computeroutput>$</computeroutput>.</para>

<para>The following macros are supported for normal table cells:</para>

<para><simplelist type=horiz columns=2>
<member><computeroutput>$${0}</computeroutput></member>
<member>This is the original value of the table cell. This macro is
useful if the user would like to extend the cell text with a fixed
string.</member>

<member><computeroutput>$${accountid}</computeroutput></member>
<member>The ID of the account.</member>

<member><computeroutput>$${resourceid}</computeroutput></member>
<member>The ID of the resource.</member>

<member><computeroutput>$${taskid}</computeroutput></member> <member>the
id of the task.</member>

</simplelist></para>

<para>Additionally the contense of other cell of the same report line can be
accessed by the column ID. The following columns are supported:</para>

<para><computeroutput>index, no, hierachindex, hierachno, id,
name</computeroutput></para>

<para>For the title or sub title of the calendar columns
(<computeroutput>daily, weekly, monthly, quarterly,
 yearly</computeroutput>) the
following macros are supported:</para>

<para><computeroutput>$${day}, $${month}, $${week}, $${quarter},
	$${year}</computeroutput>.</para>

<sect3 id="csvtaskreport_columns_celltext"><title>celltext &lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>Defines the text to be shown in each table cell of the column.</para>

</sect3>
<sect3 id="csvtaskreport_columns_cellurl"><title>cellurl &lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>If the text is not empty a hyperlink is attached to the cell
contense that points to the URL specified here.</para>

</sect3>
<sect3 id="csvtaskreport_columns_subtitle"><title>subtitle &lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>Defines the new column sub title. This is only useful for
columns which have a two-line title like
<computeroutput>daily</computeroutput>,
<computeroutput>weekly</computeroutput> and the like.</para>

</sect3>
<sect3 id="csvtaskreport_columns_subtitleurl"><title>
subtitleurl &lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>If the text is not empty a hyperlink is attached to the cell
sub title that points to the URL specified here.</para>

</sect3>
<sect3 id="csvtaskreport_columns_title"><title>title &lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>Defines the new column title.</para>

</sect3>
<sect3 id="csvtaskreport_columns_titleurl"><title>titleurl &lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>If the text is not empty a hyperlink is attached to the cell
title that points to the URL specified here.</para>

</sect3>
<sect3><title>Examples</title>

<para>To replace the tiltle of the
<computeroutput>name</computeroutput> column with the text Description
one has to write the following:</para>

<para><screen>
columns no, name { title "Description" }, daily
</screen></para>

<para>The next example adds the value of the <link
linkend="project_extend">user-defined attribute</link>
<computeroutput>category</computeroutput> enclosed in brackets in front of
the original name.</para>

<para><screen>
columns no, name { celltext "[$${Category}] $${0}" }
</screen></para>

<para>The following example shows how to add a link to the week number
in the title of a weekly report. The link can point to another report
that contains a report with more details, but limited to the specified
week only.</para>

<para><screen>
columns no, name, weekly { subtitleurl "http://Report-Week-$${week}.csv" }
</screen></para>

</sect3>
</sect2>
<sect2 id="csvtaskreport_end"><title>end &lt;day&gt;</title>

<para><simplelist type=horiz columns=2>
<member>day:</member><member><link linkend="date">DATE</link></member>
</simplelist></para>

<para>The end date for the calender view.</para>

</sect2>
<sect2 id="csvtaskreport_headline"><title>headline
&lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</member><member><link
linkend="string">STRING</link></member>
</simplelist></para>

<para>Defines the headline used for the report. The headline is printed on
top of the page and with a larger font.</para>

</sect2>
<sect2 id="csvtaskreport_hideresource"><title>hideresource
&lt;expression&gt;</title>

<para><simplelist type=horiz columns=2>
<member>expression:</member><member><link
linkend="logicalexpression">LOGICALEXPRESSION</link></member>
</simplelist></para>

<para>List only resources that do not have flags meeting the described logical
expression.</para>

</sect2>
<sect2 id="csvtaskreport_hidetask"><title>hidetask
&lt;expression&gt;</title>

<para><simplelist type=horiz columns=2>
<member>expression:</member><member><link
linkend="logicalexpression">LOGICALEXPRESSION</link></member>
</simplelist></para>

<para>List only tasks that do not have flags meeting the described logical
expression.</para>

</sect2>
<sect2 id="csvtaskreport_loadunit"><title>loadunit
&lt;unit&gt;</title>

<para><simplelist type=horiz columns=2>
<member>unit:</member><member>Can be any of the following
values:</member>
</simplelist></para>

<para><simplelist type=horiz columns=2>
<member><computeroutput>days</computeroutput></member>
<member>Show load in man or resource-days.</member>

<member><computeroutput>hours</computeroutput></member>
<member>Show load in man resource-hours.</member>

<member><computeroutput>longauto</computeroutput></member>
<member>Show load in the most appropriate unit and show long
unit name.</member>

<member><computeroutput>minutes</computeroutput></member>
<member>Show load in man or resource-minutes.</member>

<member><computeroutput>months</computeroutput></member>
<member>Show load in man or resource-months.</member>

<member><computeroutput>shortauto</computeroutput></member>
<member>Show load in the most appropriate unit and show short
unit name.</member>

<member><computeroutput>weeks</computeroutput></member>
<member>Show load in man or resource-weeks.</member>

<member><computeroutput>years</computeroutput></member>
<member>Show load in man or resource-years.</member>

</simplelist></para>

<para>The conversion between the load values is controlled by the values of
<link linkend="project_dailyworkinghours">dailyworkinghours</link> and
<link linkend="project_yearlyworkingdays">yearlyworkingdays</link>.</para>

</sect2>
<sect2 id="csvtaskreport_rollupresource"><title>rollupresource
&lt;expression&gt;</title>

<para><simplelist type=horiz columns=2>
<member>expression:</member><member><link
linkend="logicalexpression">LOGICALEXPRESSION</link></member>
</simplelist></para>

<para>Do not show sub-resources of resources with flags meeting the
described logical expression.</para>

</sect2>
<sect2 id="csvtaskreport_rolluptask"><title>rolluptask
&lt;expression&gt;</title>

<para><simplelist type=horiz columns=2>
<member>expression:</member><member><link
linkend="logicalexpression">LOGICALEXPRESSION</link></member>
</simplelist></para>

<para>Do not show subtasks of tasks with flags meeting the described
logical expression.</para>

</sect2>
<sect2 id="csvtaskreport_scenarios"><title>scenarios
&lt;id&gt; [, &lt;id&gt;]</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member><link
linkend="id">ID</link></member>
</simplelist></para>

<para>Specifies which scenarios should be included in the
report.</para>

</sect2>
<sect2 id="csvtaskreport_shorttimeformat"><title>shorttimeformat
&lt;format&gt;</title>

<para><simplelist type=horiz columns=2>
<member>format:</member><member><link
linkend="string">STRING</link></member>
</simplelist></para>

<para>Specifies time format for time short specifications. This is
normal just the hour and minutes. See <link
linkend="project_timeformat">timeformat</link> for details.</para>

</sect2>
<sect2 id="csvtaskreport_showprojectids"><title>showprojectids</title>

<para>If used, the project id is shown after the load values in the
calendar columns.</para>

</sect2>
<sect2 id="csvtaskreport_sorttasks"><title>sorttasks
&lt;criteria&gt;[, &lt; cirteria&gt;]</title>

<para><simplelist type=horiz columns=2>
<member>criteria:</member><member><link
linkend="sortingcriteria">SORTINGCRITERIA</link></member>
</simplelist></para>

<para>The sorting criteria specifies how the tasks in the generated report
will be sorted. If two items match a criteria they are sorted
according to the next criteria. Up to three criteria are supported.
Most sorting criteria come as pair of two, so the list can be sorted
in ascending order (suffix -up) or descending order (suffix -down).
Possible values are:</para>

<para><simplelist type=horiz columns=2>

<member><computeroutput>tree</computeroutput></member>
<member>This is the default and creates a list with subtasks
indented and grouped together. If this sorting is used, parent tasks
are shown when subtasks are not hidden, even if the parent task
matches the hide expression. <computeroutput>tree</computeroutput> can
only be used as the first criteria.</member>

<member><computeroutput>sequenceup</computeroutput></member>
<member>First in project file on top</member>

<member><computeroutput>sequencedown</computeroutput></member>
<member>Last in project file on top</member>

<member><computeroutput>tree</computeroutput></member>
<member>Show nesting with indentation</member>

<member><computeroutput>indexup</computeroutput></member>
<member>Lowest index on top</member>

<member><computeroutput>indexdown</computeroutput></member>
<member>Highest index on top</member>

<member><computeroutput>idup</computeroutput></member>
<member>First <link linkend="id">ID</link> on top</member>

<member><computeroutput>iddown</computeroutput></member>
<member>Last <link linkend="id">ID</link> on top</member>

<member><computeroutput>fullnameup</computeroutput></member>
<member>First full name on top</member>

<member><computeroutput>fullnamedown</computeroutput></member>
<member>Last full name on top</member>

<member><computeroutput>nameup</computeroutput></member>
<member>First name on top</member>

<member><computeroutput>namedown</computeroutput></member>
<member>Last name on top</member>

<member><computeroutput>planstartup</computeroutput></member>
<member>Earliest plan start date on top. This has replaced the bogus
<computeroutput>startup</computeroutput></member>

<member><computeroutput>planstartdown</computeroutput></member>
<member>Latest plan start date on top. This has replaced the bogus
<computeroutput>startdown</computeroutput></member>

<member><computeroutput>planendup</computeroutput></member>
<member>Earliest plan end date on top. This has replaced the bogus
<computeroutput>endup</computeroutput></member>

<member><computeroutput>planenddown</computeroutput></member>
<member>Latest plan end date on top. This has replaced the bogus
<computeroutput>enddown</computeroutput></member>

<member><computeroutput>actualstartup</computeroutput></member>
<member>Earliest actual start date on top</member>

<member><computeroutput>actualstartdown</computeroutput></member>
<member>Latest actual start date on top</member>

<member><computeroutput>actualendup</computeroutput></member>
<member>Earliest actual end date on top</member>

<member><computeroutput>actualenddown</computeroutput></member>
<member>Latest actual end date on top</member>

<member><computeroutput>completedup</computeroutput></member>
<member>Least completed task first</member>

<member><computeroutput>completeddown</computeroutput></member>
<member>Most completed task first</member>

<member><computeroutput>statusup</computeroutput></member>
<member>Earliest status first</member>

<member><computeroutput>statusdown</computeroutput></member>
<member>Latest status first</member>

<member><computeroutput>priorityup</computeroutput></member>
<member>Lowest priority on top</member>

<member><computeroutput>prioritydown</computeroutput></member>
<member>Highest priority on top</member>

<member><computeroutput>responsibleup</computeroutput></member>
<member>First name of responsible on top</member>

<member><computeroutput>responsibledown</computeroutput></member>
<member>Last name of responsible on top</member>

</simplelist></para>

</sect2>
<sect2 id="csvtaskreport_sortresources"><title>sortresources
&lt;criteria&gt;[, &lt; cirteria&gt;]</title>

<para><simplelist type=horiz columns=2>
<member>criteria:</member><member><link
linkend="sortingcriteria">SORTINGCRITERIA</link></member>
</simplelist></para>

<para>The sorting criteria specifies how the resources in the
generated report will be sorted. If two items match a criteria they
are sorted according to the next criteria. Up to three criteria are
supported.  Most sorting criterias come as pair of two, so the list
can be sorted in ascending order (suffix -up) or descending order
(suffix -down).  Possible values are:</para>

<para><simplelist type=horiz columns=2>

<member><computeroutput>tree</computeroutput></member>
<member>This is the default and creates a list with subtasks
indented and grouped together. If this sorting is used, parent tasks
are shown when subtasks are not hidden, even if the parent task
matches the hide expression. <computeroutput>tree</computeroutput> can
only be used as the first criteria.</member>

<member><computeroutput>tree</computeroutput></member>
<member>Show nesting with indentation</member>

<member><computeroutput>indexup</computeroutput></member>
<member>Lowest index on top</member>

<member><computeroutput>indexdown</computeroutput></member>
<member>Highest index on top</member>

<member><computeroutput>idup</computeroutput></member>
<member>First <link linkend="id">ID</link> on top</member>

<member><computeroutput>iddown</computeroutput></member>
<member>Last <link linkend="id">ID</link> on top</member>

<member><computeroutput>fullnameup</computeroutput></member>
<member>First full name on top</member>

<member><computeroutput>fullnamedown</computeroutput></member>
<member>Last full name on top</member>

<member><computeroutput>nameup</computeroutput></member>
<member>First name on top</member>

<member><computeroutput>namedown</computeroutput></member>
<member>Last name on top</member>

<member><computeroutput>mineffortup</computeroutput></member>
<member>Smallest minimal effort on top</member>

<member><computeroutput>mineffortdown</computeroutput></member>
<member>Largest minimal effort on top</member>

<member><computeroutput>maxeffortup</computeroutput></member>
<member>Smallest maximum effort on top</member>

<member><computeroutput>maxeffortdown</computeroutput></member>
<member>Largest maximum effort on top</member>

<member><computeroutput>rateup</computeroutput></member>
<member>Smallest rate on top</member>

<member><computeroutput>ratedown</computeroutput></member>
<member>Largest rate on top</member>

<member><computeroutput>kotrusidup</computeroutput></member>
<member>First kotrusid on top</member>

<member><computeroutput>kotrusiddown</computeroutput></member>
<member>Last kotrusid on top</member>
</simplelist></para>

</sect2>
<sect2 id="csvtaskreport_start"><title>start &lt;day&gt;</title>

<para><simplelist type=horiz columns=2>
<member>day:</member><member><link linkend="date">DATE</link></member>
</simplelist></para>

<para>The start date for the calender view.</para>

</sect2>
<sect2 id="csvtaskreport_timeformat"><title>timeformat
&lt;format&gt;</title>

<para><simplelist type=horiz columns=2>
<member>format:</member><member><link
linkend="string">STRING</link></member>
</simplelist></para>

<para>Specifies time format for time specifications. See <link
linkend="project_timeformat">timeformat</link> for details.</para>

</sect2>
</sect1>
<sect1 id="copyright"><title>copyright &lt;text&gt;</title>

<para>Define the copyright or other legal statement for your project
reports. The text will appear underneath the HTML reports right next
to the TaskJuggler version information.</para>

</sect1>
<sect1 id="export"><title>export &lt;filename&gt;</title>

<para><simplelist type=horiz columns=2>
<member>filename:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>The export report looks like a regular taskjuggler file but contains
fixed start and end dates for all tasks. The tasks only have start and
end times, their description and their project id listed. No other
attributes are exported unless they are requested using the <link
linkend="export_taskattributes">taskattributes</link>
attribute. The contense also depends on the extension of the file
name. If the file name ends with
<computeroutput>.tjp</computeroutput> a complete project with header,
resource and shift definitions is generated. In case it ends with
<computeroutput>.tji</computeroutput> only the tasks and resource
allocations are exported.</para>

<para>If specified the resource usage for the tasks is reported as well. But
only those allocations are listed that belong to tasks listed in the
same export report.</para>

<para>The export report can be used to share certain tasks or milestones
with other projects. When an export report is included the project IDs
of the included tasks must be declared first with the <link
linkend="projectid">project id property</link>.</para>

<para>Optional attributes:</para>

<sect2 id="export_hideresource"><title>hideresource
&lt;expression&gt;</title>

<para><simplelist type=horiz columns=2>
<member>expression:</><member><link
linkend="logicalexpression">LOGICALEXPRESSION</link></>
</simplelist></para>

<para>Report only resources that do not have flags meeting the
described logical expression.</para>

</sect2>
<sect2 id="export_hidetask"><title>hidetask &lt;expression&gt;</title>

<para><simplelist type=horiz columns=2>
<member>expression:</><member><link
linkend="logicalexpression">LOGICALEXPRESSION</link></>
</simplelist></para>

<para>Report only tasks that do not have flags meeting the described logical
expression.</para>

</sect2>
<sect2 id="export_rollupresource"><title>rollupresource
&lt;expression&gt;</title>

<para><simplelist type=horiz columns=2>
<member>expression:</><member><link
linkend="logicalexpression">LOGICALEXPRESSION</link></>
</simplelist></para>

<para>Do not show sub-resources of resources with flags meeting the
described logical expression.</para>

</sect2>
<sect2 id="export_rolluptask"><title>rolluptask
&lt;expression&gt;</title>

<para><simplelist type=horiz columns=2>
<member>expression:</member><member><link linkend="logicalexpression">
LOGICALEXPRESSION</link></member>
</simplelist></para>

<para>Do not show subtasks of tasks with flags meeting the described
logical expression.</para>

</sect2>
<sect2 id="export_showactual"><title>showactual</title>

<para>If used, not only the plan values are exported, but also the
actual values.</para>

</sect2>
<sect2 id="export_taskroot"><title>taskroot &lt;ID&gt;</title>

<para><simplelist type=horiz columns=2>
<member>ID:</member><member>ID of a task that specifies the new root
level</member>
</simplelist></para>

<para>Only tasks below the specified root-level tasks are exported.
The exported tasks will have the id of the root-level task stripped
from their ID, so that the sub-tasks of the root-level task become
top-level tasks in the exported file.</para>

</sect2>
<sect2 id="export_taskattributes"><title>taskattributes
&lt;attributeID&gt;[, &lt;attributeID&gt; ... ]</title>

<para><simplelist type=horiz columns=2>
<member>attributeID:</><member><link linkend="id">ID</link></member>
</simplelist></para>

<para>The list of attribute names specifies which task
attributes should be listed in the report in addition to the ones
exported by default. The following values are supported. They
correspond to the respective attributes of a <link linkend="task">
task</link>.</para>

<para><computeroutput>complete</computeroutput>,
	<computeroutput>depends</computeroutput>,
	<computeroutput>flags</computeroutput>,
	<computeroutput>maxend</computeroutput>,
	<computeroutput>maxstart</computeroutput>,
	<computeroutput>minend</computeroutput>,
	<computeroutput>minstart</computeroutput>,
	<computeroutput>note</computeroutput>,
	<computeroutput>priority</computeroutput>,
	<computeroutput>responsible</computeroutput></para>

<para>By specifying the ID of a <link
linkend="project_extend">user-defined</link> attribute, these can be
included as well.</para>

<para>A special case the is <computeroutput>all</computeroutput>
keyword. If this is part of the list, all supported task attributes
will be included in the report.	This includes all user-defined
task attributes.</para>

</sect2>

</sect1>
<sect1 id="flags"><title>flags &lt;id&gt; [, &lt;id&gt;]</title>

<para><simplelist type=horiz columns=2>
<member>id:</><member><link linkend="id">ID</link></>
</simplelist></para>

<para>Declares the specified flags. Flags can be assigned to tasks,
resources, or accounts to be used as filters during report
generation. It is legal to declare a flag more than once.</para>

<para>See also: <link linkend="htmlaccountreport">htmlaccountreport</link>,
<link linkend="htmlresourcereport">htmlresourcereport</link>, <link
linkend="htmltaskreport">htmltaskreport</link></para>

</sect1>
<sect1 id="htmlaccountreport"><title>htmlaccountreport &lt;filename&gt;</title>

<para><simplelist type=horiz columns=2>
<member>filename:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>Optional attributes:</para>

<sect2 id="htmlaccountreport_accumulate"><title>accumulate</title>

<para>If this attribute is specified the values in the calendar columns are
accumulated over the reported interval.</para>

</sect2>
<sect2 id="htmlaccountreport_caption"><title>caption
&lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>Defines the caption used for the report. The caption is printed right
above the task list.</para>

</sect2>
<sect2 id="htmlaccountreport_columns"><title>columns
&lt;colid&gt; [, &lt;colid&gt;]</title>

<para><simplelist type=horiz columns=2>
<member>colid:</><member><link linkend="id">ID</link></>
</simplelist></para>

<para>Specifies which columns should be included in the task report. The
following values for colid are available:</para>

<para><simplelist type=horiz columns=2>

<member><computeroutput>no</computeroutput></>
<member>The task index</>

<member><computeroutput>id</computeroutput></>
<member>The global <link linkend="id">ID</link> of a
task</member>

<member><computeroutput>name</computeroutput></>
<member>The name of a task, resource, or
account</member>

<member><computeroutput>total</computeroutput></>
<member>Total accumulated values</>

<member><computeroutput>daily</computeroutput></>
<member>A day-by-day calendar view of the accounts</>

<member><computeroutput>weekly</computeroutput></>
<member>A week-by-week calendar view of the
accounts</>

<member><computeroutput>monthly</computeroutput></>
<member>A month-by-month calendar view of the
accounts</>

<member><computeroutput>quaterly</computeroutput></>
<member>A quarter-by-quarter calender view of the
accounts</>

<member><computeroutput>yearly</computeroutput></>
<member>A year-by-year calender view of the accounts</>

</simplelist></para>

</sect2>
<sect2 id="htmlaccountreport_headline"><title>headline
&lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>Defines the headline used for the report. The headline is printed on
top of the page and with a larger font.</para>

</sect2>
<sect2 id="htmlaccountreport_end"><title>end &lt;day&gt;</title>

<para><simplelist type=horiz columns=2>
<member>day:</><member><link linkend="date">DATE</link></>
</simplelist></para>

<para>The end date for the calender view.</para>

</sect2>
<sect2 id="htmlaccountreport_rollupaccount"><title>rollupaccount
&lt;expression&gt;</title>

<para><simplelist type=horiz columns=2>
<member>expression:</><member><link
linkend="logicalexpression">LOGICALEXPRESSION</link></member>
</simplelist></para>

<para>Do not show sub-accounts of accounts that match the specified logical
expression.</para>

</sect2>
<sect2 id="htmlaccountreport_hideaccount"><title>hideaccount
&lt;expression&gt;</title>

<para><simplelist type=horiz columns=2>
<member>expression:</><member><link
linkend="logicalexpression">LOGICALEXPRESSION</link></member>
</simplelist></para>

<para>Do not show accounts that match the specified logical
expression.</para>

</sect2>
<sect2 id="htmlaccountreport_sorttasks"><title>sortaccounts
&lt;criteria&gt;</title>

<para><simplelist type=horiz columns=2>
<member>criteria:</member><member><link linkend="sortingcriteria">
SORTINGCRITERIA</link></member>
</simplelist></para>

</sect2>
<sect2 id="htmlaccountreport_start"><title>start &lt;day&gt;</title>

<para><simplelist type=horiz columns=2>
<member>day:</><member><link linkend="date">DATE</link></>
</simplelist></para>

<para>The start date for the calender view.</para>

</sect2>
</sect1>
<sect1 id="htmlresourcereport"><title>htmlresourcereport
&lt;filename&gt;</title>

<para><simplelist type=horiz columns=2>
<member>filename:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>Optional attributes:</para>

<para>See <link linkend="htmltaskreport">htmltaskreport</link></para>

</sect1>
<sect1 id="htmltaskreport"><title>htmltaskreport &lt;filename&gt;</title>

<para><simplelist type=horiz columns=2>
<member>filename:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>Generates a report of all tasks (excluding hidden and filtered) in
HTML format. Multiple declarations of htmltaskreport can be made to
generate several different reports with one run of TaskJuggler.</para>

<para>Optional attributes:</para>

<sect2 id="htmltaskreport_barlabels"><title>barlabels
&lt;mode&gt;</title>

<para><simplelist type=horiz columns=2>
<member>mode:</member><member>Can be any of the following
values:</member>
</simplelist></para>

<para><simplelist type=horiz columns=2>

<member><computeroutput>empty</computeroutput></member>
<member>Do not show any values on calendar bars.</member>

<member><computeroutput>load</computeroutput></member>
<member>Show task or resource load on calendar bars.</member>

</simplelist></para>

<para> The default setting is to print load values on the bars.
</para>

</sect2>
<sect2 id="htmltaskreport_caption"><title>caption &lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>Defines the caption used for the report. The caption is printed right
above the task list.</para>

</sect2>
<sect2 id="htmltaskreport_columns"><title>columns
&lt;colid&gt; [, &lt;colid&gt;]</title>

<para><simplelist type=horiz columns=2>
<member>colid:</member><member><link linkend="id">ID</link></member>
</simplelist></para>

<para>Specifies which columns should be included in the task report. The
following values for colid are available:</para>

<para><simplelist type=horiz columns=2>

<member><computeroutput>completed</computeroutput></member>
<member>The percentage the task has been completed already. This is
either the value specified by <link
linkend="task_complete">complete</link> or a value computed according
to the current date (or the date specified by <link
linkend="project_now">now</link>) and the length, duration or effort.</member>

<member><computeroutput>cost</computeroutput></member>
<member>The accumulated costs of the task and its sub tasks</member>

<member><computeroutput>daily</computeroutput></member>
<member>A day-by-day calendar view of the tasks</member>

<member><computeroutput>depends</computeroutput></member>
<member>The task index of the tasks on which this task
depends</member>

<member><computeroutput>duration</computeroutput></member>
<member>The duration of the task</member>

<member><computeroutput>effort</computeroutput></member>
<member>The effort put into the task</member>

<member><computeroutput>end</computeroutput></member>
<member>The end date of a task</member>

<member><computeroutput>endbuffer</computeroutput></member>
<member>The percentage of the endbuffer</member>

<member><computeroutput>endbufferstart</computeroutput></member>
<member>The start time of the end buffer</member>

<member><computeroutput>flags</computeroutput></member>
<member>The list of flags assigned to the task or resource</member>

<member><computeroutput>follows</computeroutput></member>
<member>The task index of the tasks that depend on this task</member>

<member><computeroutput>hierarchindex</computeroutput></member>
<member>The hierarchical index of a task. The index is calculated from the
hierachical structure of the list as well as the start and end dates.
</member>

<member><computeroutput>hierarchno</computeroutput></member>
<member>The hierarchical number of a task. It is based on the order of
declaration.</member>

<member><computeroutput>id</computeroutput></member>
<member>The global <link linkend="id">ID</link> of a task</member>

<member><computeroutput>index</computeroutput></member>
<member>The index of a task. The index is calculated from the
hierachical structure of the list as well as the start and end dates.
</member>

<member><computeroutput>kotrusid</computeroutput></member>
<member>The KotrRUs ID of the resource</member>

<member><computeroutput>maxeffort</computeroutput></member>
<member>The maximum daily load wanted for the resource</member>

<member><computeroutput>maxend</computeroutput></member>
<member>The latest desired end date</member>

<member><computeroutput>maxstart</computeroutput></member>
<member>The latest desired start date</member>

<member><computeroutput>mineffort</computeroutput></member>
<member>The minimum daily load wanted for the resource</member>

<member><computeroutput>minend</computeroutput></member>
<member>The earliest desired end date</member>

<member><computeroutput>minstart</computeroutput></member>
<member>The earliest desired start date</member>

<member><computeroutput>monthly</computeroutput></member>
<member>A month-by-month calendar view of the tasks</member>

<member><computeroutput>name</computeroutput></member>
<member>The name of a task, resource, or account</member>

<member><computeroutput>no</computeroutput></member>
<member>The task index in the list. It starts with 1 and increases for
every listed item by 1.</member>

<member><computeroutput>note</computeroutput></member>
<member>The description of the task</member>

<member><computeroutput>priority</computeroutput></member>
<member>The scheduling priority</member>

<member><computeroutput>profit</computeroutput></member>
<member>The accumulated profit of the task and its sub tasks</member>

<member><computeroutput>projectid</computeroutput></member>
<member>The project ID of the task</member>

<member><computeroutput>projectids</computeroutput></member>
<member>The project IDs of the projects a resource is allocated to</member>

<member><computeroutput>quarterly</computeroutput></member>
<member>A quarter-by-quarter calendar view of the tasks</member>

<member><computeroutput>rate</computeroutput></member>
<member>The daily rate of the resource</member>

<member><computeroutput>reference</computeroutput></member>
<member>A reference to a URL that contains further information.</member>

<member><computeroutput>resources</computeroutput></member>
<member>The names of the used resources</member>

<member><computeroutput>responsibilies</computeroutput></member>
<member>A list of all tasks indicies for which a resource is
responsible </member>

<member><computeroutput>responsible</computeroutput></member>
<member>The name of the resource responsible for a task</member>

<member><computeroutput>revenue</computeroutput></member>
<member>The accumulated revenue of the task and its sub tasks</member>

<member><computeroutput>scenario</computeroutput></member>
<member>The name of the scenario. This column is helpful when multiple
scenarios are shown in the table. See also <link
linkend="htmltaskreport_scenarios">scenarios</link>.</member>

<member><computeroutput>seqno</computeroutput></member>
<member>The task index in the order of declaration. Each
time a task declaration is completed, the sequence number is increased
by 1. </member>

<member><computeroutput>schedule</computeroutput></member>
<member>A detailed schedule of the allocations for the resource.</member>

<member><computeroutput>start</computeroutput></member>
<member>The start date of a task</member>

<member><computeroutput>startbuffer</computeroutput></member>
<member>The percentage of the start buffer</member>

<member><computeroutput>startbufferend</computeroutput></member>
<member>The end time of the start buffer</member>

<member><computeroutput>status</computeroutput></member>
<member>The current status of the task. This is derived from the
current date or the date specified by <link
linkend="project_now">now</link> and the degree of completion. The
degree of completion is either computed or has been specified by <link
linkend="task_complete">complete</link>.</member>

<member><computeroutput>weekly</computeroutput></member>
<member>A week-by-week calendar view of the tasks</member>

<member><computeroutput>yearly</computeroutput></member>
<member>A year-by-year calendar view of the tasks</member>
</simplelist></para>

<para>Optional attributes of each column:</para>

<para>All optional attributes that have a single text argument support
macro expansion. Contrary to the normal macro expansion, these macros
are expanded during the report generation. So the value of the macro
is being changed after each table cell or table line. Consequently
only build in macros can be used. To protect the macro calls agains
expansion during the initial file processing, the report macros must
be prefixed with an additional <computeroutput>$</computeroutput>.</para>

<para>The following macros are supported for normal table cells:</para>

<para><simplelist type=horiz columns=2>
<member><computeroutput>$${0}</computeroutput></member>
<member>This is the original value of the table cell. This macro is
useful if the user would like to extend the cell text with a fixed
string.</member>

<member><computeroutput>$${accountid}</computeroutput></member>
<member>The ID of the account.</member>

<member><computeroutput>$${resourceid}</computeroutput></member>
<member>The ID of the resource.</member>

<member><computeroutput>$${taskid}</computeroutput></member> <member>the
id of the task.</member>

</simplelist></para>

<para>Additionally the contense of other cell of the same report line can be
accessed by the column ID. The following columns are supported:</para>

<para><computeroutput>index, no, hierachindex, hierachno, id,
name</computeroutput></para>

<para>For the title or sub title of the calendar columns
(<computeroutput>daily, weekly, monthly, quarterly,
 yearly</computeroutput>) the
following macros are supported:</para>

<para><computeroutput>$${day}, $${month}, $${week}, $${quarter},
	$${year}</computeroutput>.</para>

<sect3 id="htmltaskreport_columns_celltext"><title>celltext &lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>Defines the text to be shown in each table cell of the column.</para>

</sect3>
<sect3 id="htmltaskreport_columns_cellurl"><title>cellurl &lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>If the text is not empty a hyperlink is attached to the cell
contense that points to the URL specified here.</para>

</sect3>
<sect3 id="htmltaskreport_columns_hidecelltext"><title>hidecelltext
&lt;expression&gt;</title>

<para><simplelist type=horiz columns=2>
<member>expression:</><member><link
linkend="logicalexpression">LOGICALEXPRESSION</link></>
</simplelist></para>

<para>If the expression is true, the cell will be left empty.</para>

</sect3>
<sect3 id="htmltaskreport_columns_hidecellurl"><title>hidecellurl
&lt;expression&gt;</title>

<para><simplelist type=horiz columns=2>
<member>expression:</><member><link
linkend="logicalexpression">LOGICALEXPRESSION</link></>
</simplelist></para>

<para>If the expression is true, no URL will be attached to the cell
contense.</para>

</sect3>
<sect3 id="htmltaskreport_columns_subtitle"><title>subtitle &lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>Defines the new column sub title. This is only useful for
columns which have a two-line title like
<computeroutput>daily</computeroutput>,
<computeroutput>weekly</computeroutput> and the like.</para>

</sect3>
<sect3 id="htmltaskreport_columns_subtitleurl"><title>
subtitleurl &lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>If the text is not empty a hyperlink is attached to the cell
sub title that points to the URL specified here.</para>

</sect3>
<sect3 id="htmltaskreport_columns_title"><title>title &lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>Defines the new column title.</para>

</sect3>
<sect3 id="htmltaskreport_columns_titleurl"><title>titleurl &lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>If the text is not empty a hyperlink is attached to the cell
title that points to the URL specified here.</para>

</sect3>
<sect3><title>Examples</title>

<para>To replace the tiltle of the
<computeroutput>name</computeroutput> column with the text Description
one has to write the following:</para>

<para><screen>
columns no, name { title "Description" }, daily
</screen></para>

<para>The next example adds the value of the <link
linkend="project_extend">user-defined attribute</link>
<computeroutput>category</computeroutput> enclosed in brackets in front of
the original name.</para>

<para><screen>
columns no, name { celltext "[$${Category}] $${0}" }
</screen></para>

<para>The following example shows how to add a link to the week number
in the title of a weekly report. The link can point to another report
that contains a report with more details, but limited to the specified
week only.</para>

<para><screen>
columns no, name, weekly { subtitleurl "http://Report-Week-$${week}.html" }
</screen></para>

</sect3>
</sect2>
<sect2 id="htmltaskreport_end"><title>end &lt;day&gt;</title>

<para><simplelist type=horiz columns=2>
<member>day:</member><member><link linkend="date">DATE</link></member>
</simplelist></para>

<para>The end date for the calender view.</para>

</sect2>
<sect2 id="htmltaskreport_headline"><title>headline
&lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</member><member><link
linkend="string">STRING</link></member>
</simplelist></para>

<para>Defines the headline used for the report. The headline is printed on
top of the page and with a larger font.</para>

</sect2>
<sect2 id="htmltaskreport_hideresource"><title>hideresource
&lt;expression&gt;</title>

<para><simplelist type=horiz columns=2>
<member>expression:</member><member><link
linkend="logicalexpression">LOGICALEXPRESSION</link></member>
</simplelist></para>

<para>List only resources that do not have flags meeting the described logical
expression.</para>

</sect2>
<sect2 id="htmltaskreport_hidetask"><title>hidetask
&lt;expression&gt;</title>

<para><simplelist type=horiz columns=2>
<member>expression:</member><member><link
linkend="logicalexpression">LOGICALEXPRESSION</link></member>
</simplelist></para>

<para>List only tasks that do not have flags meeting the described logical
expression.</para>

</sect2>
<sect2 id="htmltaskreport_loadunit"><title>loadunit
&lt;unit&gt;</title>

<para><simplelist type=horiz columns=2>
<member>unit:</member><member>Can be any of the following
values:</member>
</simplelist></para>

<para><simplelist type=horiz columns=2>
<member><computeroutput>days</computeroutput></member>
<member>Show load in man or resource-days.</member>

<member><computeroutput>hours</computeroutput></member>
<member>Show load in man resource-hours.</member>

<member><computeroutput>longauto</computeroutput></member>
<member>Show load in the most appropriate unit and show long
unit name.</member>

<member><computeroutput>minutes</computeroutput></member>
<member>Show load in man or resource-minutes.</member>

<member><computeroutput>months</computeroutput></member>
<member>Show load in man or resource-months.</member>

<member><computeroutput>shortauto</computeroutput></member>
<member>Show load in the most appropriate unit and show short
unit name.</member>

<member><computeroutput>weeks</computeroutput></member>
<member>Show load in man or resource-weeks.</member>

<member><computeroutput>years</computeroutput></member>
<member>Show load in man or resource-years.</member>

</simplelist></para>

<para>The conversion between the load values is controlled by the values of
<link linkend="project_dailyworkinghours">dailyworkinghours</link> and
<link linkend="project_yearlyworkingdays">yearlyworkingdays</link>.</para>

</sect2>
<sect2 id="htmltaskreport_rawhead"><title>rawhead &lt;html&gt;</title>

<para><simplelist type=horiz columns=2>
<member>html:</member><member><link
linkend="string">STRING</link></member>
</simplelist></para>

<para>The <computeroutput>rawhead</computeroutput> attribute can be
used to insert HTML code between the <link
linkend="htmltaskreport_caption">caption</link> and the table.</para>

</sect2>
<sect2 id="htmltaskreport_rawstylesheet"><title>rawstylesheet
&lt;html&gt;</title>

<para><simplelist type=horiz columns=2>
<member>html:</member><member><link
linkend="string">STRING</link></member>
</simplelist></para>

<para>The <computeroutput>rawstylesheet</computeroutput> attribute can
be used to change the style sheet of the html report. A user-defined
stylesheet could look like this one:</para>

<para><screen>
.tj_table { text-align:center }
.tj_header_row { background-color:#a5c2ff; font-size:110%; font-weight:bold; text-align:center }
.tj_row { text-algin:left }
.tj_cell { background-color:#f3ebae; font-size:70%; text-align:center }
.tj_header_cell { background-color:#a5c2ff; font-size:70%; text-align:center }
</screen></para>
</sect2>
<sect2 id="htmltaskreport_rawtail"><title>rawtail &lt;html&gt;</title>

<para><simplelist type=horiz columns=2>
<member>html:</member><member><link
linkend="string">STRING</link></member>
</simplelist></para>

<para>The <computeroutput>rawtail</computeroutput> attribute can be
used to insert raw html code after the table.</para>

</sect2>
<sect2 id="htmltaskreport_rollupresource"><title>rollupresource
&lt;expression&gt;</title>

<para><simplelist type=horiz columns=2>
<member>expression:</member><member><link
linkend="logicalexpression">LOGICALEXPRESSION</link></member>
</simplelist></para>

<para>Do not show sub-resources of resources with flags meeting the
described logical expression.</para>

</sect2>
<sect2 id="htmltaskreport_rolluptask"><title>rolluptask
&lt;expression&gt;</title>

<para><simplelist type=horiz columns=2>
<member>expression:</member><member><link
linkend="logicalexpression">LOGICALEXPRESSION</link></member>
</simplelist></para>

<para>Do not show subtasks of tasks with flags meeting the described
logical expression.</para>

</sect2>
<sect2 id="htmltaskreport_scenarios"><title>scenarios
&lt;id&gt; [, &lt;id&gt;]</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member><link
linkend="id">ID</link></member>
</simplelist></para>

<para>Specifies which scenarios should be included in the
report.</para>

</sect2>
<sect2 id="htmltaskreport_shorttimeformat"><title>shorttimeformat
&lt;format&gt;</title>

<para><simplelist type=horiz columns=2>
<member>format:</member><member><link
linkend="string">STRING</link></member>
</simplelist></para>

<para>Specifies time format for time short specifications. This is
normal just the hour and minutes. See <link
linkend="project_timeformat">timeformat</link> for details.</para>

</sect2>
<sect2 id="htmltaskreport_showprojectids"><title>showprojectids</title>

<para>If used, the project id is shown after the load values in the
calendar columns.</para>

</sect2>
<sect2 id="htmltaskreport_sorttasks"><title>sorttasks
&lt;criteria&gt;[, &lt; cirteria&gt;]</title>

<para><simplelist type=horiz columns=2>
<member>criteria:</member><member><link
linkend="sortingcriteria">SORTINGCRITERIA</link></member>
</simplelist></para>

<para>The sorting criteria specifies how the tasks in the generated report
will be sorted. If two items match a criteria they are sorted
according to the next criteria. Up to three criteria are supported.
Most sorting criteria come as pair of two, so the list can be sorted
in ascending order (suffix -up) or descending order (suffix -down).
Possible values are:</para>

<para><simplelist type=horiz columns=2>

<member><computeroutput>tree</computeroutput></member>
<member>This is the default and creates a list with subtasks
indented and grouped together. If this sorting is used, parent tasks
are shown when subtasks are not hidden, even if the parent task
matches the hide expression. <computeroutput>tree</computeroutput> can
only be used as the first criteria.</member>

<member><computeroutput>sequenceup</computeroutput></member>
<member>First in project file on top</member>

<member><computeroutput>sequencedown</computeroutput></member>
<member>Last in project file on top</member>

<member><computeroutput>tree</computeroutput></member>
<member>Show nesting with indentation</member>

<member><computeroutput>indexup</computeroutput></member>
<member>Lowest index on top</member>

<member><computeroutput>indexdown</computeroutput></member>
<member>Highest index on top</member>

<member><computeroutput>idup</computeroutput></member>
<member>First <link linkend="id">ID</link> on top</member>

<member><computeroutput>iddown</computeroutput></member>
<member>Last <link linkend="id">ID</link> on top</member>

<member><computeroutput>fullnameup</computeroutput></member>
<member>First full name on top</member>

<member><computeroutput>fullnamedown</computeroutput></member>
<member>Last full name on top</member>

<member><computeroutput>nameup</computeroutput></member>
<member>First name on top</member>

<member><computeroutput>namedown</computeroutput></member>
<member>Last name on top</member>

<member><computeroutput>planstartup</computeroutput></member>
<member>Earliest plan start date on top. This has replaced the bogus
<computeroutput>startup</computeroutput></member>

<member><computeroutput>planstartdown</computeroutput></member>
<member>Latest plan start date on top. This has replaced the bogus
<computeroutput>startdown</computeroutput></member>

<member><computeroutput>planendup</computeroutput></member>
<member>Earliest plan end date on top. This has replaced the bogus
<computeroutput>endup</computeroutput></member>

<member><computeroutput>planenddown</computeroutput></member>
<member>Latest plan end date on top. This has replaced the bogus
<computeroutput>enddown</computeroutput></member>

<member><computeroutput>actualstartup</computeroutput></member>
<member>Earliest actual start date on top</member>

<member><computeroutput>actualstartdown</computeroutput></member>
<member>Latest actual start date on top</member>

<member><computeroutput>actualendup</computeroutput></member>
<member>Earliest actual end date on top</member>

<member><computeroutput>actualenddown</computeroutput></member>
<member>Latest actual end date on top</member>

<member><computeroutput>completedup</computeroutput></member>
<member>Least completed task first</member>

<member><computeroutput>completeddown</computeroutput></member>
<member>Most completed task first</member>

<member><computeroutput>statusup</computeroutput></member>
<member>Earliest status first</member>

<member><computeroutput>statusdown</computeroutput></member>
<member>Latest status first</member>

<member><computeroutput>priorityup</computeroutput></member>
<member>Lowest priority on top</member>

<member><computeroutput>prioritydown</computeroutput></member>
<member>Highest priority on top</member>

<member><computeroutput>responsibleup</computeroutput></member>
<member>First name of responsible on top</member>

<member><computeroutput>responsibledown</computeroutput></member>
<member>Last name of responsible on top</member>

</simplelist></para>

</sect2>
<sect2 id="htmltaskreport_sortresources"><title>sortresources
&lt;criteria&gt;[, &lt; cirteria&gt;]</title>

<para><simplelist type=horiz columns=2>
<member>criteria:</member><member><link
linkend="sortingcriteria">SORTINGCRITERIA</link></member>
</simplelist></para>

<para>The sorting criteria specifies how the resources in the
generated report will be sorted. If two items match a criteria they
are sorted according to the next criteria. Up to three criteria are
supported.  Most sorting criterias come as pair of two, so the list
can be sorted in ascending order (suffix -up) or descending order
(suffix -down).  Possible values are:</para>

<para><simplelist type=horiz columns=2>

<member><computeroutput>tree</computeroutput></member>
<member>This is the default and creates a list with subtasks
indented and grouped together. If this sorting is used, parent tasks
are shown when subtasks are not hidden, even if the parent task
matches the hide expression. <computeroutput>tree</computeroutput> can
only be used as the first criteria.</member>

<member><computeroutput>tree</computeroutput></member>
<member>Show nesting with indentation</member>

<member><computeroutput>indexup</computeroutput></member>
<member>Lowest index on top</member>

<member><computeroutput>indexdown</computeroutput></member>
<member>Highest index on top</member>

<member><computeroutput>idup</computeroutput></member>
<member>First <link linkend="id">ID</link> on top</member>

<member><computeroutput>iddown</computeroutput></member>
<member>Last <link linkend="id">ID</link> on top</member>

<member><computeroutput>fullnameup</computeroutput></member>
<member>First full name on top</member>

<member><computeroutput>fullnamedown</computeroutput></member>
<member>Last full name on top</member>

<member><computeroutput>nameup</computeroutput></member>
<member>First name on top</member>

<member><computeroutput>namedown</computeroutput></member>
<member>Last name on top</member>

<member><computeroutput>mineffortup</computeroutput></member>
<member>Smallest minimal effort on top</member>

<member><computeroutput>mineffortdown</computeroutput></member>
<member>Largest minimal effort on top</member>

<member><computeroutput>maxeffortup</computeroutput></member>
<member>Smallest maximum effort on top</member>

<member><computeroutput>maxeffortdown</computeroutput></member>
<member>Largest maximum effort on top</member>

<member><computeroutput>rateup</computeroutput></member>
<member>Smallest rate on top</member>

<member><computeroutput>ratedown</computeroutput></member>
<member>Largest rate on top</member>

<member><computeroutput>kotrusidup</computeroutput></member>
<member>First kotrusid on top</member>

<member><computeroutput>kotrusiddown</computeroutput></member>
<member>Last kotrusid on top</member>
</simplelist></para>

</sect2>
<sect2 id="htmltaskreport_start"><title>start &lt;day&gt;</title>

<para><simplelist type=horiz columns=2>
<member>day:</member><member><link linkend="date">DATE</link></member>
</simplelist></para>

<para>The start date for the calender view.</para>

</sect2>
<sect2 id="htmltaskreport_timeformat"><title>timeformat
&lt;format&gt;</title>

<para><simplelist type=horiz columns=2>
<member>format:</member><member><link
linkend="string">STRING</link></member>
</simplelist></para>

<para>Specifies time format for time specifications. See <link
linkend="project_timeformat">timeformat</link> for details.</para>

</sect2>
</sect1>
<sect1 id="htmlstatusreport"><title>htmlstatusreport &lt;filename&gt;</title>

<para><simplelist type=horiz columns=2>
<member>filename:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>Generates a report covering the current status of the project.
The report consists of 4 tables. The first table lists all tasks that should
have been finished already, but are not. The scenario specific
attribute <link linkend="task_statusnote">statusnote</link> can be
used to explain the reason for the delay or a more detailed
description of the task status. The second table lists all tasks that
are still in progress and are on or ahead of schedule. The third table
lists all task that have been completed during the report interval.
The default interval is one week, but can be changed by specifying
another start and end date. The fourth table lists all task that will
start during the next report interval, by default, the next week. </para>

<para>Optional attributes:</para>

<sect2 id="htmlstatusreport_caption"><title>caption &lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>Defines the caption used for the report. The caption is printed right
above the task list.</para>

</sect2>
<sect2 id="htmlstatusreport_headline"><title>headline
&lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</member><member><link
linkend="string">STRING</link></member>
</simplelist></para>

<para>Defines the headline used for the report. The headline is printed on
top of the page and with a larger font.</para>

</sect2>
<sect2 id="htmlstatusreport_rawhead"><title>rawhead &lt;html&gt;</title>

<para><simplelist type=horiz columns=2>
<member>html:</member><member><link
linkend="string">STRING</link></member>
</simplelist></para>

<para>The <computeroutput>rawhead</computeroutput> attribute can be
used to insert HTML code between the <link
linkend="htmlstatusreport_caption">caption</link> and the table.</para>

</sect2>
<sect2 id="htmlstatusreport_rawstylesheet"><title>rawstylesheet
&lt;html&gt;</title>

<para><simplelist type=horiz columns=2>
<member>html:</member><member><link
linkend="string">STRING</link></member>
</simplelist></para>

<para>The <computeroutput>rawstylesheet</computeroutput> attribute can
be used to change the style sheet of the html report. A user-defined
stylesheet could look like this one:</para>

<para><screen>
.tj_table { text-align:center }
.tj_header_row { background-color:#a5c2ff; font-size:110%; font-weight:bold; text-align:center }
.tj_row { text-algin:left }
.tj_cell { background-color:#f3ebae; font-size:70%; text-align:center }
.tj_header_cell { background-color:#a5c2ff; font-size:70%; text-align:center }
</screen></para>

</sect2>
<sect2 id="htmlstatusreport_table"><title>table &lt;number&gt;</title>

<para><simplelist type=horiz columns=2>
<member>number:</member><member>Specifies the index of the report (1 -
4)</member>
</simplelist></para>

<para>The report consists of 4 specilized htmltaskreport tables. With
this attribute the user can customize the tables towards the
individual needs.</para>

<para>Optional attributes:</para>

<para>See <link linkend="htmltaskreport">htmltaskreport</link>.</para>

<para><screen>
htmlstatusreport "." {
	headline "The big headline"
	caption "The big caption"
	table 1 {
		headline "This is the headline of the first table."
		caption "This is the caption of the first table."
		sorttasks indexup
		hidetask 0
	}
	table 2 {
		columns seqno, name, cost, weekly
	}
}
</screen></para>
</sect2>
</sect1>
<sect1 id="htmlweeklycalendar"><title>htmlweeklycalendar
&lt;filename&gt;</title>

<para><simplelist type=horiz columns=2>
<member>filename:</><member><link linkend="string">STRING</link></>
</simplelist></para>

</sect1>
<sect1 id="icalreport"><title>icalreport &lt;filename&gt;</title>

<para><simplelist type=horiz columns=2>
<member>filename:</member><member><link linkend="string">STRING</link></member>
</simplelist></para>

<para>Create an ical calender format output file which can be imported
to korganiser.</para>

</sect1>
<sect1 id="include"><title>include &lt;filename&gt;</title>

<para><simplelist type=horiz columns=2>
<member>filename:</member><member><link linkend="string">STRING</link></member>
</simplelist></para>

<para>Includes the specified file name as if its contents would be written
instead of the include property.
<computeroutput>include</computeroutput> commands can be used within
global scope or between property declarations of tasks, resources, and
accounts.</para>

<para>For technical reasons you have to supply the optional pair of
curly brackets if the include is followed immediately by a macro that
is defined within the included file.</para>

<para>Optional attributes:</para>

<sect2 id="include_taskprefix"><title>taskprefix &lt;id&gt;</title>

<para>All tasks in the included file are added as sub-tasks of the
task specified by <computeroutput>taskprefix</computeroutput>.</para>
</sect2>
</sect1>
<sect1 id="kotrusmode"><title>kotrusmode &lt;mode&gt;</title>

<para><simplelist type=horiz columns=2>
<member>mode:</member><member><link linkend="string">STRING</link></member>
</simplelist></para>

<para>sets the KoTrus mode. Valid values are</para>

<para><itemizedlist mark='opencircle'>
<listitem><para>'NoKotrus' for no KoTrus connection</para></listitem>
<listitem><para>'XML' to read from an XML file (not yet supported)</para></listitem>
<listitem><para>'DB' to read from database configured in your .taskjugglerrc</para></listitem>
</itemizedlist></para>

</sect1>
<sect1 id="macro"><title>macro &lt;id&gt; [ body ]</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member><link linkend="id">ID</link></member>
</simplelist></para>

<para>The body is not optional. It must be enclosed in [ ]. Macros can be
declared like this:</para>

<para><screen>
macro FOO [ This text ];
</screen></para>

<para>If later ${FOO} is found in the project file, it is expanded to ' This
text '. Macros may have arguments. Arguments are special macros with
numbers as names. The number specifies the index of the
argument.</para>

<para><screen>
macro FOO [ This ${1} text ]
</screen></para>

<para>will expand to ' This stupid text ' if called as ${FOO
"stupid"}. Macros may call other macros.</para>

<para>Macro <link linkend="id">ID</link>s should have at least one uppercase
letter as all lowercase letter<link linkend="id">ID</link>s may be
used in a later version for built-in macros like 'if', 'expr' or
'for'. Macro names can be prefixed by a questionmark. In this case the
macro will expand to nothing if the macro is not defined. Otherwise
the undefined macro would be flagged with an error message.</para>

<para><screen>
This macro call ${?foo} will expand to nothing if foo is undefined.
</screen></para>

</sect1>
<sect1 id="maxeffort"><title>maxeffort &lt;value&gt;</title>

<para><simplelist type=horiz columns=2>
<member>value:</member><member><link linkend="real">REAL</link></member>
</simplelist></para>

<para>The default daily maximum effort for a resource. Resources will not be
scheduled more than this value. This value will be used for all
subsequent resource declarations unless specified otherwise.</para>

</sect1>
<sect1 id="mineffort"><title>mineffort &lt;value&gt;</title>

<para><simplelist type=horiz columns=2>
<member>value:</member><member><link linkend="real">REAL</link></member>
</simplelist></para>

<para>The default daily minimum effort for a resource. Resources that are
used less than this value will be marked in the report. This value
will be used for all subsequent resource declarations unless specified
otherwise.</para>

</sect1>
<sect1 id="priority"><title>priority &lt;value&gt;</title>

<para><simplelist type=horiz columns=2>
<member>value:</member><member><link linkend="integer">INTEGER</link></member>
</simplelist></para>

<para>The default scheduling priority for tasks. The value must be between 1
and 1000 and is inherited by all tasks if no other priority is
specified. The default value is 500.</para>

</sect1>
<sect1 id="project"><title>project &lt;id&gt; &lt;name&gt; &lt;version&gt;
&lt;start&gt; &lt;end&gt;</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member><link linkend="id">ID</link></member> 
<member>name:</member><member><link linkend="string">STRING</link></member> 
<member>version:</member><member><link linkend="string">STRING</link></member>
<member>start:</member><member><link linkend="date">DATE</link></member>
<member>end:</member><member><link linkend="date">DATE</link></member>
</simplelist></para>

<para>The project property is mandatory and should be the first property in
a project file. &lt;id&gt; is the default project <link linkend="id">
ID</link> used to register resource allocations in a global database.
&lt;name&gt; is the name of the project. &lt;version&gt; is the
version of the project file. Typically this is the CVS ID.
&lt;start&gt; and &lt;end&gt; define the time frame of the project.
The end may be well after the end of the last task, but must be
specified to terminate the scheduling process.</para>
<para>Optional attributes:</para>

<sect2 id="project_allowredefinition"><title>allowredefinition</title>

<para>If this attribute is specified, redefinitions of task, resources
or accounts are not flagged as errors. The primary use of this
attribute is for projects that are created by mergin sub projects
which are again the result of sub project merging. In certain
situations enclosing tasks, accounts or resources can included in more
than one sub projects. This attribute then avoids the error which is
in most other cases a real user error.</para>

<para>In case attributes of the same property must be specified in two
different locations the <link linkend="supplement">supplement</link>
construct is the recommended way to do this.</para>

</sect2>
<sect2 id="project_currency"><title>currency &lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</><member><link linkend="string">STRING</link></>
</simplelist></para>

<para>The currency for money values in reports.</para>

<para>See also: <link linkend="account">account</link>, <link
linkend="project_currencyformat">project_currencyformat</link></para>

</sect2>
<sect2 id="project_currencyformat"><title>currencyformat 
&lt;negativeprefix&gt;
&lt;negativesuffix&gt;
&lt;thousandseparator&gt;
&lt;fractionseparator&gt;
&lt;fractiondigits&gt;
</title>

<para><simplelist type=horiz columns=2>
<member>negativeprefix:</><member><link linkend="string">STRING</link></>
<member>negativesuffix:</><member><link linkend="string">STRING</link></>
<member>thousandseparator:</><member><link linkend="string">STRING</link></>
<member>fractionseparator:</><member><link linkend="string">STRING</link></>
<member>fractiondigits:</><member><link linkend="integer">INTEGER</link></>
</simplelist></para>

<para>These values specify the default format used for all currency
values. The <computeroutput>negativeprefix</computeroutput> and
<computeroutput>negativesuffix</computeroutput> strings enclose
negative currency values. The
<computeroutput>thousandseparator</computeroutput> can be used to make
large numbers more readable. The
<computeroutput>fractionseparator</computeroutput> separates the
fractional part from the rest.
<computeroutput>fractiondigits</computeroutput> specifies how many
fractional digits should be shown at a maximum.</para>

<para>See also: <link linkend="account">account</link>, <link
linkend="project_currency">currency</link> and <link
linkend="project_numberformat">numberformat</link></para>

</sect2>
<sect2 id="project_dailyworkinghours"><title>dailyworkinghours
&lt;value&gt;</title>

<para><simplelist type=horiz columns=2>
<member>value:</member><member><link
linkend="real">REAL</link></member>
</simplelist></para>

<para>Set the average number of working hours per day. This is used as the
base to convert working hours into working days. This affects for
example the <link linkend="task_length">length</link> task attribute. The
default value is 8 hours and should work for most Western countries.
The value you specify should match the settings you specified for
<link linkend="project_workinghours">workinghours</link>. See also
<link linkend="project_yearlyworkingdays">yearlyworkingdays</link>.</para>

</sect2>
<sect2 id="project_now"><title>now &lt;sometime&gt;</title>

<para><simplelist type=horiz columns=2>
<member>sometime:</member><member><link linkend="date">DATE</link></member>
</simplelist></para>

<para>Use the specified day and time for computation of the project status
instead of the current moment.</para>

</sect2>
<sect2 id="project_extend"><title>extend &lt;property&gt; {
	[&lt;attribute definition&gt;] } 
	</title>

<para><simplelist type=horiz columns=2>
<member>property:</member><member>Which property you like to extend.
Possible values are <computeroutput>task</computeroutput>,
<computeroutput> resource</computeroutput> or <computeroutput>
account</computeroutput></member>
<member>attribute definition:</member><member>See below.</member>
</simplelist></para>

<para>Often it is desireable to collect more information in the
project file than is necessary for task scheduling and resource
allocation. To add such information to tasks, resources or accounts
the user can extend these properties with user-defined attributes. The
new attributes can be <computeroutput>text</computeroutput> or
<computeroutput>reference</computeroutput> attributes. Optionally the
user can specify if the attribute value should be inherited from the
enclosing property.</para>

<sect3 id="project_extend_attribute"><title>&lt;type&gt; &lt;id&gt;
&lt;name&gt;</title>

<para><simplelist type=horiz columns=2>
<member>type:</member><member>Specifies the type of the user-defined
attribute. <computeroutput>text</computeroutput> is a simple text
attribute. <computeroutput>reference</computeroutput> is an URL to
another document.</member>
<member>id:</member><member>An user-defined ID that is unique within
the used-defined task attributes. To avoid conflicts with future
built-in attributes, all user defined attributes must start with a
capital letter.</member>
<member>name:</member><member>A short description of the attribute. It
will be used as default column header in reports.</member>
</simplelist></para>

<para>The following example shows how user-defined attributes can be
used.</para>

<para><screen>
project prj "Project" "1.0" 2003-06-15 2003-07-15 {
	extend task {
		text MyText "My Text" { inherit }
		reference MyLink "My Link"
	}
}

task myTask "My Task" {
	start 2003-06-15
	milestone
	MyText "This is a little text I wrote"
	MyLink "http://www.taskjuggler.org" { label "The Taskjuggler Web Site"}
}

htmltaskreport "report.html" {
	columns no, name, MyText, MyLink
}
</screen></para>
</sect3>
</sect2>
<sect2 id="project_numberformat"><title>numberformat 
&lt;negativeprefix&gt;
&lt;negativesuffix&gt;
&lt;thousandseparator&gt;
&lt;fractionseparator&gt;
&lt;fractiondigits&gt;
</title>

<para><simplelist type=horiz columns=2>
<member>negativeprefix:</><member><link linkend="string">STRING</link></>
<member>negativesuffix:</><member><link linkend="string">STRING</link></>
<member>thousandseparator:</><member><link linkend="string">STRING</link></>
<member>fractionseparator:</><member><link linkend="string">STRING</link></>
<member>fractiondigits:</><member><link linkend="integer">INTEGER</link></>
</simplelist></para>

<para>These values specify the default format used for all numbers
such as load values. The <computeroutput>negativeprefix</computeroutput> and
<computeroutput>negativesuffix</computeroutput> strings enclose
negative currency values. The
<computeroutput>thousandseparator</computeroutput> can be used to make
large numbers more readable. The
<computeroutput>fractionseparator</computeroutput> separates the
fractional part from the rest.
<computeroutput>fractiondigits</computeroutput> specifies how many
fractional digits should be shown at a maximum.</para>

<para>See also: <link
linkend="project_currencyformat">currencyformat</link></para>

</sect2>
<sect2 id="project_scenario"><title>scenario &lt;id&gt;
&lt;name&gt;</title>

<para>
TODO
</para>

</sect2>
<sect2 id="project_shorttimeformat"><title>shorttimeformat
&lt;format&gt;</title>

<para><simplelist type=horiz columns=2>
<member>format:</member><member><link
linkend="string">STRING</link></member>
</simplelist></para>

<para>Determines how short time specifications in reports look like. It is
just a global default settings, since it can be specified for each
report <link
linkend="htmltaskreport_shorttimeformat">individually</link>. The
format of the string is identical to <link
linkend="project_timeformat">timeformat</link>.</para>

</sect2>
<sect2 id="project_timeformat"><title>timeformat &lt;format&gt;</title>

<para><simplelist type=horiz columns=2>
<member>format:</member><member><link
linkend="string">STRING</link></member>
</simplelist></para>

<para>Determines how time specifications in reports look like. It is
just a global default settings, since it can be specified for each
report <link linkend="htmltaskreport_timeformat">individually</link>.</para>

<para>
Ordinary characters placed in the format string are copied to s
without conversion.  Conversion specifiers are intro­ duced  by  a
`%' character, and are replaced in s as follows:</para>

<para><simplelist type=horiz columns=2>

<member>%a</member><member>The abbreviated weekday name according to
the  current locale.</member>
																								 
<member>%A</member><member>The full weekday name according  to the
current locale.</member>
																																			
<member>%b</member><member>The abbreviated month name according to the
current locale.</member>

<member>%B</member><member> The full month name according to
the current locale.</member>  

<member>%c</member><member> The preferred date and time
representation for the current locale.</member>

<member>%C</member><member> The century number (year/100) as a 2-digit
integer.  (SU)</member>
	
<member>%d</member><member>The day of the month as a decimal number
(range  01 to 31).</member>

<member>%D</member><member>Equivalent  to  %m/%d/%y.  (Yecch  -  for
Americans only.  Americans should note that in other countries %d/%m/%y 
is rather common.  This means that in international context this format is
ambiguous  and should not be used.) (SU)</member>

<member>%e</member><member>Like  %d, the day of the month as a decimal number,
but a leading zero is replaced by a space. (SU)</member>
	
<member>%E</member><member>Modifier: use alternative format, see
below. (SU)</member>
	
<member>%F</member><member>Equivalent to %Y-%m-%d (the ISO 8601 date
format). (C99)</member>

<member>%G</member><member>The ISO 8601 year with century as a decimal
number.  The 4-digit year corresponding to the ISO week number  (see
%V). This has the same format and value as %y, except that if the ISO week
number belongs to  the previous or next year, that year is used
instead. (TZ)</member>
	
<member>%g</member><member>Like %G, but without century, i.e., with a  2-digit
year (00-99). (TZ)</member>
	
<member>%h</member><member>Equivalent to %b. (SU)</member>
	
<member>%H</member><member>The  hour as a decimal number using a
24-hour clock (range 00 to 23).</member>
											 
<member>%I</member><member>The hour as a decimal number using a
12-hour  clock (range 01 to 12).</member>
																						
<member>%j</member><member>The  day of the year as a decimal number
(range 001 to 366).</member>

<member>%k</member><member>The hour (24-hour clock) as a decimal
number (range 0 to 23); single digits are preceded by a blank.  (See
also %H.) (TZ)</member>
	
<member>%l</member><member>The hour (12-hour clock) as a decimal
number (range 1 to 12); single digits are preceded by a blank. (See
also %I.) (TZ)</member>
	
<member>%m</member><member>The month as a decimal number (range 01 to
12).</member>
				 
<member>%M</member><member>The minute as a decimal number (range 00 to
59).</member>
								
<member>%n</member><member>A newline character. (SU)</member>
	
<member>%O</member><member>Modifier: use alternative format, see
below. (SU)</member>
	
<member>%p</member><member>Either 'AM' or 'PM' according  to  the
given  time value, or the corresponding strings for the
current locale.  Noon is treated as `pm'  and  midnight as
'am'.</member>
							
<member>%P</member><member>Like  %p but in lowercase: 'am' or 'pm' or
%a corresponding string for the current locale. (GNU)</member>
	
<member>%r</member><member>The time in a.m. or p.m. notation.   In
the  POSIX locale this is equivalent to '%I:%M:%S %p'. (SU)</member>
	
<member>%R</member><member>The  time  in  24-hour notation (%H:%M).
(SU) For a version including the seconds, see %T below.</member>

<member>%s</member><member>The number of seconds since the Epoch,
i.e.,  since 1970-01-01 00:00:00 UTC. (TZ)</member>
	
<member>%S</member><member>The second as a decimal number (range 00 to
61).</member>
				 
<member>%t</member><member>A tab character. (SU)</member>
	
<member>%T</member><member>The time in 24-hour notation (%H:%M:%S).
(SU)</member>
	
<member>%u</member><member>The  day  of  the  week as a decimal, range
1 to 7, Monday being 1.  See also %w. (SU)</member>
	
<member>%U</member><member>The week number of the current year  as  a
decimal number,  range  00  to  53, starting with the first Sunday as
the first day of week 01. See also %V and %W.</member>
																									 
<member>%V</member><member>The ISO 8601:1988 week number of the
current year as a decimal number, range 01 to 53, where week 1 is the
first week that has at least 4 days in the current year, and with
Monday as the first day of the week.  See also %U %and %W.
%(SU)</member>
	
<member>%w</member><member>The  day  of  the  week as a decimal, range
0 to 6, Sunday being 0.  See also %u.</member>

<member>%W</member><member>The week number of the current %year  as  a
decimal number,  range  00  to  53, starting with the first Monday as
the first day of week 01.</member>
							
<member>%x</member><member>The preferred date representation for  the
current locale without the time.</member>

<member>%X</member><member>The  preferred  time representation for
the current locale without the date.</member>
																												
<member>%y</member><member>The year as a decimal number without
a century (range 00 to 99).</member>

<member>%Y</member><member> The year as a decimal number
including the century.</member>

<member>%z</member><member> The time zone as hour offset from
GMT. Required to emit RFC822-conformant dates (using "%a, %d %%b
%Y %H:%M:%S %%z"). (GNU)</member>
	
<member>%Z</member><member>The time zone or name or
abbreviation.</member>
				 
<member>%+</member><member>The date and time in date(1) format.
(TZ)</member>
	
<member>%%</member><member>A literal '%' character.</member>

</simplelist></para>

<para>Some conversion specifiers can be  modified  by preceding them
by  the E or O modifier to indicate that an alterna­ tive format
should be used.  If the alternative format  or specification  does
not exist for the current locale, the behavior will be as if the
unmodified conversion specifi­ cation  were used.  (SU) The Single
Unix Specification mentions %Ec, %EC, %Ex, %%EX, %Ry, %EY, %Od,
%Oe,  %OH, %OI, %Om, %OM, %OS, %Ou, %OU, %OV, %Ow, %OW,
%Oy, where the effect of the O modifier is to use alternative
numeric symbols (say, Roman numerals), and that of the E modifier is
to use a locale-dependent alternative representation.</para>

<para>The documentation of the
<computeroutput>timeformat</computeroutput> attribute has been taken
from the man page of the GNU <computeroutput>strftime</computeroutput>
function.</para>

</sect2>
<sect2 id="project_timezone"><title>timezone &lt;value&gt;</title>

<para><simplelist type=horiz columns=2>
<member>value:</member><member><link
linkend="string">STRING</link></member>
</simplelist></para>

<para>Sets the default timezone of the project. All times that have no
time zones specified will be assumed to be in this timezone. The value
must be a string just like those used for the TZ environment variable.
Most Linux systems have a command line utility called
<computeroutput>tzselect</computeroutput> to lookup possible
values.</para>

<para>The project start and end time are not affected by this setting. You
have to explicitly state the timezone for those dates or the system
defaults are assumed.</para>

</sect2>
<sect2 id="project_timingresolution"><title>timingresolution
&lt;value&gt; &lt;unit&gt;</title>

<para><simplelist type=horiz columns=2>
<member>value:</member><member><link
linkend="integer">INTEGER</link></member>
<member>unit:</member><member><link linkend="unit">UNIT</link></member>
</simplelist></para>

<para>Sets the minimum timing resolution. The smaller the value, the longer
the scheduling process lasts and the more memory the application
needs. The default is 1 hour. The smallest value is 5 min.</para>

</sect2>
<sect2 id="project_weekstartsmonday"><title>weekstartsmonday</title>

<para>Set the beginning of the week to Monday. This is important for
the numbering of the weeks. TaskJuggler uses the ISO8601 compliant
definition. The 1st week of the year is the week that contains January
4. ISO8601 defines Monday as the first day of the week. This can be
changed by specifying <link linkend="project_weekstartssunday">
weekstartssunday </link>. </para>

</sect2>
<sect2 id="project_weekstartssunday"><title>weekstartssunday</title>

<para>Set the beginning of the week to Sunday. See also <link
linkend="project_weekstartsmonday"> weekstartsmonday </link>.</para>

</sect2>
<sect2 id="project_workinghours"><title>workinghours &lt;weekday&gt;
&lt;from&gt;-&lt;to&gt; [&lt;from&gt;-&lt;to&gt;]</title>

<para><simplelist type=horiz columns=2>
<member>weekday:</member><member><link
linkend="weekday">WEEKDAY</link></member>
<member>from:</member><member><link
linkend="time">TIME</link></member>
<member>to:</member><member><link linkend="time">TIME</link></member>
</simplelist></para>

<para>Sets the working hours to the specified intervals. The values are used
as default values for all resources defined afterwards. The default
values are <computeroutput>08:00-12:00</computeroutput> and
<computeroutput>13:00-17:00</computeroutput> from
<computeroutput>Mon</computeroutput> -
<computeroutput>Fri</computeroutput>. A day that has
no defined working hours is not considered a working day when
determining the <link linkend="task_length">length</link> of a
task.</para>

<para>See also: <link linkend="resource_workinghours">resource</link>,
<link linkend="shift_workinghours">shift</link></para>

</sect2>
<sect2 id="project_yearlyworkingdays"><title>yearlyworkingdays
&lt;value&gt;</title>

<para><simplelist type=horiz columns=2>
<member>value:</member><member><link
linkend="real">REAL</link></member>
</simplelist></para>

<para>Set the average number of working days per year. This is used as the
base to convert working days into working months or working years.
This affects for example the<link linkend="task_length">length</link> task
attribute. The default value is 252 days and should work for most
Western countries. The value you specify should match the settings you
specified for<link linkend="project_workinghours">workinghours</link> and
<link linkend="vacation">vacation</link>. See also <link
linkend="project_dailyworkinghours">dailyworkinghours</link>.</para>

</sect2>
</sect1>
<sect1 id="projectid"><title>projectid &lt;id&gt;</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member><link linkend="id">ID</link></member>
</simplelist></para>

<para>This property adds a new project ID to the project. The project ID is
then the new active project ID and all subsequent top-level task will
inherit this ID.</para>

<para>See also: <link linkend="task_projectid">projectid</link> and
<link linkend="projectids">projectids</link>.</para>

</sect1>
<sect1 id="projectids"><title>projectid &lt;id&gt;</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member><link linkend="id">ID</link></member>
</simplelist></para>

<para>This property declares a list of project IDs to the project.
Multiple declaration of the same project ID is legal. A project ID
must be declared, before it can be assigend to a task.</para>

<para>See also: <link linkend="task_projectid">projectid</link> and
<link linkend="projectid">projectid</link>.</para>

</sect1>
<sect1 id="rate"><title>rate &lt;money&gt;</title>

<para><simplelist type=horiz columns=2>
<member>money:</member><member><link linkend="real">REAL</link></member>
</simplelist></para>

<para>The default daily rate for using a resource full-time. This value will
be used for all subsequent resource declarations unless specified
otherwise.</para>

</sect1>
<sect1 id="resource"><title>resource &lt;id&gt; &lt;name&gt;</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member><link linkend="id">ID</link></member>
<member>name:</member><member><link linkend="string">STRING</link></member>
</simplelist></para>

<para>Optional attributes:</para>

<sect2 id="resource_booking"><title>booking &lt;from&gt;
&lt;to&gt; &lt;task&gt;</title>

<para><simplelist type=horiz columns=2>
<member>from:</member><member><link linkend="date">DATE</link></member>
<member>to:</member><member><link linkend="date">DATE</link></member>
<member>task:</member><member><link linkend="id">ID</link></member>
</simplelist></para>

<para>Assigns the resource for the specified interval to the specified task.
This assignment is used for the actual scenario.</para>

<para>Optional attributes:</para>

<sect3 id="resource_booking_sloppy"><title>sloppy &lt;mode&gt;</title>

<para><simplelist type=horiz columns=2>
<member>sloppy:</member><member>Number between 0 and 3. 0 (default):
period may not contain any off-duty hours, vacation or other task
assignments. 1: period may contain off-duty hours, but not vacation or
other task assignments. 2: period may contain off-duty hours and
vacation, but no other task assignments. 3: Period may overlap with
off-duty hours, vacation or other task assignments. These are silently
skipped.</member>
</simplelist></para>
</sect3>

</sect2>
<sect2 id="resource_efficiency"><title>efficiency
&lt;value&gt;</title>

<para><simplelist type=horiz columns=2>
<member>value:</member><member><link linkend="real">REAL</link></member>
</simplelist></para>

<para>The efficiency of the resource. This can be used to describe a team as
a resource. A team of five should have an efficiency of 5.0.</para>

</sect2>
<sect2 id="resource_kotrusid"><title>kotrusid &lt;id&gt;</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member><link linkend="string">STRING</link></member>
</simplelist></para>

<para>The KoTrus <link linkend="id">ID</link> of the resource 
(e-mail address).</para>

</sect2>
<sect2 id="resource_maxeffort"><title>maxeffort &lt;value&gt;</title>

<para><simplelist type=horiz columns=2>
<member>value:</member><member><link linkend="real">REAL</link></member>
</simplelist></para>

<para>The daily maximum effort for a resource. Resources will not be
scheduled to be used more than this value. A value of 1.0 means a full
working day. 0.5 means half a working day.</para>

</sect2>
<sect2 id="resource_mineffort"><title>mineffort &lt;value&gt;</title>

<para><simplelist type=horiz columns=2>
<member>value:</member><member><link linkend="real">REAL</link></member>
</simplelist></para>

<para>The daily minimum effort for a resource. Resources that are used less
than this value will be marked in the report.</para>

</sect2>
<sect2 id="resource_rate"><title>rate &lt;value&gt;</title>

<para><simplelist type=horiz columns=2>
<member>value:</member><member><link linkend="real">REAL</link></member>
</simplelist></para>

<para>The daily costs of the resource.</para>

</sect2>
<sect2 id="resource_resource"><title>resource &lt;id&gt;
&lt;name&gt;</title>

<para>Resources may be nested to create groups. A nested resource inherits
the attributes of the parent resource. Only those attributes specified
prior to the declaration of the nested resource are inherited.</para>

</sect2>
<sect2 id="resource_shift"><title>shift &lt;id&gt; [&lt;from&gt; [-
&lt;to&gt;]]</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member><link linkend="id">ID</link></member>
<member>from:</member><member><link linkend="date">DATE</link></member>
<member>to:</member><member><link linkend="date">DATE</link></member>
</simplelist></para>

<para>Assigns the resource to a defined shift during the specified interval.
Multiple shifts can be defined, but shift intervals may not
overlap.</para>

</sect2>
<sect2 id="resource_vacation"><title>vacation &lt;from&gt; [-
&lt;to&gt;]</title>

<para><simplelist type=horiz columns=2>
<member>from:</member><member><link linkend="date">DATE</link></member>
<member>to:</member><member><link linkend="date">DATE</link></member>
</simplelist></para>

<para>Specifies a vacation for a resource. The to value is NOT included in
the vacation. It specifies the first second after the vacation.</para>

</sect2>
<sect2 id="resource_workinghours"><title>workinghours &lt;weekday&gt;
&lt;from&gt; - &lt;to&gt; [, &lt;from&gt;-&lt;to&gt;]</title>

<para><simplelist type=horiz columns=2>
<member>weekday:</member><member><link linkend="weekday">WEEKDAY</link></member>
<member>from:</member><member><link linkend="time">TIME</link></member>
<member>to:</member><member><link linkend="time">TIME</link></member>
</simplelist></para>

<para>Sets the working hours to the specified intervals. If no hours are
specified for a day, the global definitions are used.</para>

<para>See also:<link linkend="project_workinghours">workinghours</link></para>

</sect2>
</sect1>
<sect1 id="shift"><title>shift &lt;id&gt; &lt;name&gt;</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member><link linkend="id">ID</link></member>
<member>name:</member><member><link linkend="string">STRING</link></member>
</simplelist></para>

<para>When several resource have the same working hours, these working
hours should be defined as shifts. Each shift must have a unique <link
linkend="id">ID</link>. Resources can be assigned to shifts for
certain intervals.</para>

<para>See also: <link linkend="resource_shift">resource</link>, <link
linkend="task_shift">task</link> and <link
linkend="task_allocate_shift">allocate</link></para>
<para>The following optional parameter may be used. At least one optional
parameter must be specified.</para>

<sect2 id="shift_shift"><title>shift &lt;id&gt; &lt;name&gt;</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member><link linkend="id">ID</link></member>
<member>name:</member><member><link linkend="string">STRING</link></member>
</simplelist></para>

<para>Shifts may be nested. A nested shift inherits the attributes of the
enclosing shift.</para>

</sect2>
<sect2 id="shift_workinghours"><title>workinghours &lt;weekday&gt;
&lt;from&gt;-&lt;to&gt; [,&lt;from&gt;-&lt;to&gt;]</title>

<para><simplelist type=horiz columns=2>
<member>weekday:</member><member><link linkend="weekday">WEEKDAY</link></member>
<member>from:</member><member><link linkend="time">TIME</link></member>
<member>to:</member><member><link linkend="time">TIME</link></member>
</simplelist></para>

<para>Sets the working hours to the specified intervals. If no hours are
specified for a day, the global definitions are used. If no working
hours should be specified for a day, the keyword 'off' must be used
instead of the time interval.</para>

<para>See also: <link linkend="project_workinghours">workinghours</link>,
<link linkend="resource_workinghours">resource</link></para>

</sect2>
</sect1>
<sect1 id="supplement"><title>supplement &lt;task|resource&gt;
&lt;ID&gt;</title>

<para><simplelist type=horiz columns=2>
<member>ID:</member><member><link linkend="id">ID</link></member>
</simplelist></para>

<para>The supplement keyword provides a mechanism to add more attributes to
already defined tasks or resources. The additional attributes must
obey the same rules as in regular task or resource definitions and
must be enclosed by curly braces.</para>

<para>This construct is primarily meant for situations where the information
about a task or resource is split over several files. E. g. the
vacation dates for the resources may be in a separate file that was
generated by some other tool.</para>

</sect1>
<sect1 id="task"><title>task &lt;id&gt; &lt;name&gt;</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member><link linkend="id">ID</link></member>
<member>name:</member><member><link
linkend="string">STRING</link></member>
</simplelist></para>

<para>Tasks may be nested and some attributes are inherited by the
subtasks.</para>

<para>Some attributes are scenario specific. To specify the scenario
for which the attribute is meant, the user can prefix the attribute
with the scenario ID and a colon. If no scenario ID prefix is used,
the plan scenario is used.</para>

<para><screen>
task t "Task" {
  plan:start 2003-06-16
  actual:end 2003-06-17
}
</screen></para>

<para>Optional attributes:</para>

<sect2 id="task_account"><title>account &lt;id&gt;</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member><link linkend="id">ID</link></member>
</simplelist></para>

<para>Specifies the account to which all money associated with this task will be
credited. The type of the account specifies whether the money
associated with this task is considered cost or revenue. The task can
contribute to the account either with the resource usage fees or with
<link linkend="task_startcredit">start-</link> or <link
linkend="task_endcredit">endcredit</link>. If no account has been
specified for the task, it will generate neither cost nor revenue.</para>

<para>This attribute is inherited by subtasks if specified prior to the
definition of the subtask.</para>

<para>See also: <link linkend="account">account</link></para>

</sect2>
<sect2 id="task_allocate"><title>allocate &lt;id&gt; [, &lt;id&gt;] </title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member><link linkend="id">ID</link></member>
</simplelist></para>

<para>Specifies a resource that can be used to
fulfill the task. More than one resource can be specified for a task.
All resources must be declared before they can be used.</para>

<para>Resource allocations are mandatory for <link
linkend="task_effort">effort</link>
based tasks. Task with a <link linkend="task_length">
length</link> or <link linkend="task_duration">duration</link>
specification may have resources allocated, but do not require
them.</para>

<para>Resource allocations have no impact on container tasks. Sub
tasks that are declared after the resource allocations inherit the
allocations.</para>

<para>Optional attributes:</para>

<sect3 id="task_allocate_alternative"><title>alternative
&lt;id&gt; [, &lt;id&gt;]</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member><link linkend="id">ID</link></member>
</simplelist></para>

<para>Specifies <link linkend="id">ID</link>s of alternative <link
linkend="resource">resources</link>. One of the alternatives will be used
if the main resource is not available.  If multiple resources are
used, they must be separated by commas.</para>

</sect3>
<sect3 id="task_allocate_load"><title>load &lt;days&gt;</title>

<para><simplelist type=horiz columns=2>
<member>days:</member><member><link
linkend="real">REAL</link></member>
</simplelist></para>

<para>Specifies how many days the <link
linkend="resource">resource</link> can be
used per day for this task. A load of 0.5 means that the resource will
be used for at most half a working day for this task.</para>

</sect3>
<sect3 id="task_allocate_mandatory"><title>mandatory</title>

<para>If an allocation for a task is marked as being mandatory, no
allocations are booked for the time slots where any of the mandatory
resources are not available. If the mandatory resource is a group,
then at least one of the resources of the group must be available, not
all resources.</para>

</sect3>
<sect3 id="task_allocate_select"><title>select
&lt;criteria&gt;</title>

<para><simplelist type=horiz columns=2>
<member>criteria:</member><member>Determines the selection criteria.
The following criteria are supported:</member>
</simplelist></para>

<para><simplelist type=horiz columns=2>

<member><computeroutput>maxloaded</computeroutput></member>
<member>Pick the available resource that has been used the most so
far.</member>

<member><computeroutput>minloaded</computeroutput></member>
<member>Pick the available resource that has been used the least so
far.</member>

<member><computeroutput>order</computeroutput></member>
<member>Pick the first available resource from the list.</member>

<member><computeroutput>random</computeroutput></member>
<member>Pick a random resource from the list.</member>

</simplelist></para>

<para>The select functions controls which resource is picked from an
allocation and it's alternatives. The selection is re-evaluated each
time the resource used in the previous time slot becomes
unavailable.</para>

</sect3>
<sect3 id="task_allocate_shift"><title>shift &lt;id&gt; [&lt;from&gt;
[- &lt;to&gt;]]</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member><link linkend="id">ID</link></member>
<member>from:</member><member><link
linkend="date">DATE</link></member>
<member>to:</member><member><link linkend="date">DATE</link></member>
</simplelist></para>

<para>Limits the allocation activity during the specified intervals to the
working hours of the shift specified with
<computeroutput>ID</computeroutput>. Multiple shifts intervals can be specified
but shift intervals may not overlap. If shifts are specified for an
allocation no allocations will be made outside of the intervals for
which a shift has been assigned. So you need to take care that for all
periods that you want an allocation a shift has been specified.</para>

</sect3>
<sect3 id="task_allocate_persistent"><title>persistent</title>

<para>If set, the first available resource out of the specified resource and
its specified alternatives will be used for the entire task.</para>

</sect3>
</sect2>
<sect2 id="task_complete"><title>complete &lt;percent&gt;</title>

<para><simplelist type=horiz columns=2>
<member>percent:</member><member><link
linkend="integer">INTEGER</link></member>
</simplelist></para>

<para>Specifies what percentage of the task is already completed. This can be
useful for project tracking.</para>

<para>Tasks may not have subtasks if this attribute is used.</para>

<para>This attribute is scenario specific.</para>

</sect2>
<sect2 id="task_depends"><title>depends
&lt;id&gt; [, &lt;id&gt;]</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member>GLOBAL_<link
linkend="id">ID</link></member>
</simplelist></para>

<para>Specifies that the task cannot start before the task with the
specified <link linkend="id">ID</link>s have been finished. If multiple
<link linkend="id">ID</link>s are specified, they must be separated by
commas. IDs must be either global or relative. A relative <link
linkend="id">
ID</link> starts with a number of '!'. Each '!' moves the scope to
the parent task. Global <link linkend="id">ID</link>s do not contain '!',
but have <link linkend="id">ID</link>s separated by dots.</para>

<para><screen>
task foo1 {
   task foo2 { start 2002-12-04 }
   task foo3 { depends !foo2 }
}
task bar { depends foo1.foo2 }
</screen></para>

<para>By using the 'depends' attribute, the scheduling policy is
automatically set to ASAP. If 'depends' and 'precedes' are used, the
last policy counts.</para>

<para>See also: <link linkend="task_scheduling">scheduling</link>,
<link linkend="task_precedes">precedes</link></para>

</sect2>
<sect2 id="task_duration"><title>duration &lt;number&gt;
&lt;unit&gt;</title>

<para><simplelist type=horiz columns=2>
<member>number:</member><member><link linkend="real">REAL</link></member>
<member>unit:</member><member><link linkend="unit">UNIT</link></member>
</simplelist></para>

<para>Specifies the time the task occupies the resources. This is calender
time, not working time. 7d means one week. If resources are specified
they are allocated when available. Availability of resources has no
impact on the duration of the task. It will always be the specified
duration.</para>

<para>Tasks may not have subtasks if this attribute is used.</para>

<para>See also: <link linkend="task_effort">effort</link>, <link
linkend="task_length">length</link></para>

<para>This attribute is scenario specific.</para>
</sect2>
<sect2 id="task_effort"><title>effort &lt;number&gt;
&lt;unit&gt;</title>

<para><simplelist type=horiz columns=2>
<member>number:</member><member><link
linkend="real">REAL</link></member>
<member>unit:</member><member><link
linkend="unit">UNIT</link></member>
</simplelist></para>

<para>Specifies the effort needed to complete the task. An effort of 4d can
be done with 2 full-time resources in 2 days. The task will not finish
before the resources have contributed the specified effort. So the
duration of the task will depend on the availability of the resources.
</para>

<para>WARNING: In almost all real world projects effort is not the product
of time and resources. This is only true if the task can be
partitioned without adding any overhead. For more information about
this read "The Mythical Man-Month" by Frederick P. Brooks, Jr.</para>

<para>Tasks may not have subtasks if this attribute is used.</para>

<para>See also: <link linkend="task_duration">duration</link>, <link
linkend="task_length">length</link></para>

<para>This attribute is scenario specific.</para>

</sect2>
<sect2 id="task_end"><title>end &lt;date&gt;</title>

<para><simplelist type=horiz columns=2>
<member>date:</member><member><link linkend="date">DATE</link></member>
</simplelist></para>

<para>The planned end date for the task. If no end date is given, the
task must depend on other tasks. If no dependency is given, the project
start date is used. Setting an end date will switch the scheduling
policy to ALAP.</para>

<para>See also: <link linkend="task_start">start</link></para>

<para>This attribute is scenario specific.</para>

</sect2>
<sect2 id="task_endbuffer"><title>endbuffer &lt;percent&gt;</title>

<para><simplelist type=horiz columns=2>
<member>percent:</member><member><link linkend="real">REAL</link> or
<link linkend="integer">INTEGER</link></member>
</simplelist></para>

<para>The end buffer specifies how many percent of the specified
length, duration or effort may be shortened at the end. This value is
solely for documentational purposes. It is not used for scheduling. You
can specify <computeroutput>startbuffer</computeroutput> or
<computeroutput>endbuffer</computeroutput> values to document, that
you might have some extra time to squeeze out if needed.</para>

<para>See also: <link linkend="task_startbuffer">startbuffer</link></para>

<para>This attribute is scenario specific.</para>

</sect2>
<sect2 id="task_endcredit"><title>endcredit &lt;amount&gt;</title>

<para><simplelist type=horiz columns=2>
<member>amount:</member><member><link linkend="real">REAL</link></member>
</simplelist></para>

<para>Specifies an amount that is credited to the account specified by the
<link linkend="task_account">account</link> property at the moment the
tasks ends.</para>

<para>See also: <link
linkend="task_startcredit">startcredit</link></para>

<para>This attribute is scenario specific.</para>

</sect2>
<sect2 id="task_flags"><title>flags
&lt;id&gt; [, &lt;id&gt;]</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member><link linkend="id">ID</link></member>
</simplelist></para>

<para>Attaches flags to the task. Flags can be used to filter tasks from the
the output. Flags must be <link linkend="flags">flags</link> before they
can be used.</para>

<para>Flags are inherited by subtasks from their parent tasks if they are
declared before the subtask. Flags that are declared after the subtasks 
are not inherited.</para>

</sect2>
<sect2 id="task_length"><title>length &lt;number&gt;
&lt;unit&gt;</title>

<para><simplelist type=horiz columns=2>
<member>number:</member><member><link linkend="real">REAL</link></member>

<member>unit:</member><member><link linkend="unit">UNIT</link></member>
</simplelist></para>

<para>Specifies the time the task occupies the resources. This is working
time, not calender time. 7d means 7 working days, not one week.
Whether a day is considered a working day or not depends on the
defined <link linkend="project_workinghours">working hours</link> and global
<link linkend="vacation">vacations</link>. A task with a length
specification may have resource allocations. Resources are allocated
when they are available. The availability has no impact on the
duration of the task. A day where none of the specified resources is
available is still considered a working day, if there is no global
vacation of or global working time defined.</para>

<para>Tasks may not have subtasks if this attribute is used.</para>

<para>See also: <link linkend="task_duration">duration</link>, <link
linkend="task_effort">effort</link></para>

<para>This attribute is scenario specific.</para>

</sect2>
<sect2 id="task_maxend"><title>maxend &lt;date&gt;</title>

<para><simplelist type=horiz columns=2>
<member>date:</member><member><link linkend="date">DATE</link></member>
</simplelist></para>

<para>The latest desired end date for the task. If this date cannot be
met, the task is marked in the task list.</para>

<para>This attribute is inherited by subtasks.</para>

<para>This attribute is scenario specific.</para>

<para>See also: <link linkend="task_minend">minend</link></para>

</sect2>
<sect2 id="task_maxstart"><title>maxstart &lt;date&gt;</title>

<para><simplelist type=horiz columns=2>
<member>date:</member><member><link linkend="date">DATE</link></member>
</simplelist></para>

<para>The latest desired start date for the task. If this date cannot be
met, the task is marked in the task list.</para>

<para>This attribute is inherited by subtasks.</para>

<para>This attribute is scenario specific.</para>

<para>See also: <link linkend="task_minstart">minstart</link></para>

</sect2>
<sect2 id="task_milestone"><title>milestone</title>

<para> Marks the task as a milestone. A milestone may not have any
form of duration criteria. If both a start and an end value are
specified, they have to be identical. A milestone may not have sub
tasks.</para>

</sect2>
<sect2 id="task_minend"><title>minend &lt;date&gt;</title>

<para><simplelist type=horiz columns=2>
<member>date:</member><member><link linkend="date">DATE</link></member>
</simplelist></para>

<para>The earliest desired end date for the task. If this date cannot be
met, the task is marked in the task list.</para>

<para>This attribute is inherited by subtasks.</para>

<para>This attribute is scenario specific.</para>

</sect2>
<sect2 id="task_minstart"><title>minstart &lt;date&gt;</title>

<para><simplelist type=horiz columns=2>
<member>date:</member><member><link linkend="date">DATE</link></member>
</simplelist></para>

<para>The earliest desired start date for the task. If this date cannot
be met, the task is marked in the task list.</para>

<para>This attribute is inherited by subtasks.</para>

<para>This attribute is scenario specific.</para>

<para>See also: <link linkend="task_maxstart">maxstart</link></para>

</sect2>
<sect2 id="task_note"><title>note &lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</member><member><link linkend="string">STRING</link></member>
</simplelist></para>

<para>A longer description of the task.</para>

</sect2>
<sect2 id="task_scheduled"><title>scheduled</title>

<para> This marks the task as being scheduled for the scenario.
If this attribute is specified, the task must have a fixed start and
end date for the scenario. It's primarily intended for internal use only. 
</para>

<para>This attribute is scenario specific.</para>

</sect2>
<sect2 id="task_precedes"><title>precedes
&lt;id&gt; [, &lt;id&gt;]</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member>GLOBAL_<link
linkend="id">ID</link></member>
</simplelist></para>

<para>Specifies that this task precedes the tasks with the specified
<link linkend="id">ID</link>s. If multiple tasks are specified, they must be
separated by commas. The format is equivalent to the 'depends'
attribute.</para>

<para>By using the <computeroutput>precedes</computeroutput>
attribute, the <link linkend="task_scheduling">scheduling policy</link> is
automatically set to ALAP. If <link
linkend="task_depends">depends</link> and
<link linkend="task_precedes">precedes</link> are used, the
last policy counts.</para>

</sect2>
<sect2 id="task_priority"><title>priority &lt;value&gt;</title>

<para><simplelist type=horiz columns=2>
<member>value:</member><member><link linkend="integer">INTEGER</link></member>
</simplelist></para>

<para>Specifies a priority between 1 and 1000. A task with higher priority
is more likely to get the requested resources.</para>

<para>This attribute is inherited by subtasks if specified prior to the
definition of the subtask.</para>

</sect2>
<sect2 id="task_projectid"><title>projectid &lt;id&gt;</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member><link linkend="id">ID</link></member>
</simplelist></para>

<para>Assigns the specified project ID to the task. This will overwrite the
inherited project id. Subtasks that are defined after a <computeroutput>projectid</computeroutput>
statement will inherit the project ID.</para>

<para>See also: <link linkend="projectid">projectid</link></para>

</sect2>
<sect2 id="task_reference"><title>reference &lt;url&gt;</title>

<para><simplelist type=horiz columns=2>
<member>url:</member><member><link linkend="string">STRING</link></member>
</simplelist></para>

<para>A URL that references a file with additional information.</para>

<para>Optional attributes:</para>

<sect3 id="task_reference_label"><title>label &lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</member><member><link linkend="string">STRING</link></member>
</simplelist></para>

<para>A text that is displayed in reports instead of the URL.</para>

</sect3>
</sect2>
<sect2 id="task_responsible"><title>responsible &lt;id&gt;</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member><link linkend="id">ID</link></member>
</simplelist></para>

<para>The ID of the resource that is responsible for this task.</para>

<para>This attribute is inherited by subtasks if specified prior to the
definition of the subtask.</para>

</sect2>
<sect2 id="task_scheduling"><title>scheduling &lt;policy&gt;</title>

<para><simplelist type=horiz columns=2>
<member>policy:</member><member><link linkend="id">ID</link></member>
</simplelist></para>

<para>This specifies the scheduling policy for the task. Possible
values are:</para>

<para><simplelist type=horiz columns=2>

<member><computeroutput>ALAP</computeroutput></member> <member>As late
as possible. The task is scheduled to happen as late as
possible.</member>

<member><computeroutput>ASAP</computeroutput></member> <member>As soon
as possible. The task is scheduled to happen as early as
possible.</member>
</simplelist></para>

<para>The scheduling policy is automatically changed if the <link
linkend="task_depends">depends</link> or <link
linkend="task_precedes">precedes</link> attributes are used. If
multiple attributes that affect the scheduling policy are used, that
last attribute determines the effective policy.</para>

</sect2>
<sect2 id="task_shift"><title>shift &lt;id&gt; [&lt;from&gt; [-
&lt;to&gt;]]</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member><link linkend="id">ID</link></member>
<member>from:</member><member><link linkend="date">DATE</link></member>
<member>to:</member><member><link linkend="date">DATE</link></member>
</simplelist></para>

<para>Limits the task activity during the specified interval to the working
hours of the specified shift. Multiple shifts can be defined, but
shift intervals may not overlap.</para>

</sect2>
<sect2 id="task_start"><title>start &lt;date&gt;</title>

<para><simplelist type=horiz columns=2>
<member>date:</member><member><link linkend="date">DATE</link></member>
</simplelist></para>

<para>The planned start date for the task. If no start date is given,
the task must depend on other tasks. If no dependency is given, the
project start date is used. Setting a start date will switch the
scheduling policy to ASAP.</para>

<para>This attribute is scenario specific.</para>

<para>See also: <link linkend="task_end">task_end</link></para>

</sect2>
<sect2 id="task_startbuffer"><title>startbuffer
&lt;percent&gt;</title>

<para><simplelist type=horiz columns=2>
<member>percent:</member><member><link linkend="real">REAL</link> or
<link linkend="integer">INTEGER</link></member>
</simplelist></para>

<para>The start buffer specifies how many percent of the specified
length, duration or effort may be shortened at the beginning of the
task. This value is solely for documentational purposes. It is not used
for scheduling. You can specify
<computeroutput>startbuffer</computeroutput> or
<computeroutput>endbuffer</computeroutput> values to document, that
you might have some extra time to squeeze out if needed.</para>

<para>This attribute is scenario specific.</para>

<para>See also: <link linkend="task_endbuffer">endbuffer</link></para>

</sect2>
<sect2 id="task_startcredit"><title>startcredit
&lt;amount&gt;</title>

<para><simplelist type=horiz columns=2>
<member>amount:</member><member><link linkend="real">REAL</link></member>
</simplelist></para>

<para>Specifies an amount that is credited to the account specified by the
<link linkend="task_account">account</link> property at the moment the
tasks starts.</para>

<para>This attribute is scenario specific.</para>

<para>See also: <link linkend="account">account</link>, <link
linkend="task_endcredit">endcredit</link></para>

</sect2>
<sect2 id="task_statusnote"><title>statusnote &lt;text&gt;</title>

<para><simplelist type=horiz columns=2>
<member>text:</member><member><link linkend="string">STRING</link></member>
</simplelist></para>

<para>A description or explanation of the task status.</para>

<para>This attribute is scenario specific.</para>

</sect2>
<sect2 id="task_task"><title>task &lt;id&gt; &lt;name&gt;</title>

<para><simplelist type=horiz columns=2>
<member>id:</member><member><link linkend="id">ID</link></member>
<member>name:</member><member><link linkend="string">STRING</link></member>
</simplelist></para>

<para>A task may have subtasks. If subtasks are specified, many of the
other attributes are illegal. See attributes for details.</para>

</sect2>
</sect1>
<sect1 id="vacation"><title>vacation name &lt;start&gt; [-
&lt;end&gt;]</title>

<para><simplelist type=horiz columns=2>
<member>name:</member><member><link
linkend="string">STRING</link></member>
<member>start:</member><member><link linkend="date">DATE</link></member>
<member>end:</member><member><link linkend="date">DATE</link></member>
</simplelist></para>

<para>Defines a vacation period for all resources. The end value is NOT part
of the vacation. So <computeroutput>2001-12-24 -
2001-12-25</computeroutput> specifies one day of
vacation, not two days.</para>

</sect1>
<sect1 id="xmlreport"><title>xmlreport &lt;filename&gt;</title>

<para><simplelist type=horiz columns=2>
<member>filename:</member><member><link
linkend="string">STRING</link></member>
</simplelist></para>

<para>Creates a XML report of the scheduled project. The filename
should have the extension <computeroutput>.tjx</computeroutput>. Note
that the file format is still not completely stable yet. We might
change it in future releases of TaskJuggler. If you plan to use it for
your own application, please contact us first.</para>

</sect1>
</chapter>

