Part 2 - Creating a subproject template

Overview

The subproject live template is used to store important subproject details, such as start/end dates, milestones and related documents.

Using Scaffolding elements, we will build a form for storing project data similar to the one above . 

What's in this guide

Under each section is the source of that particular template. Alternatively, the full template is available in the last section.

The templates can be easily inserted into your Confluence instance using the Confluence Source Editor.


Creating a Template

In the confluence side bar

  • go to Space tools 

  • select Content Tools

In the User Created Templates section

  • choose Create New Template

When creating a field with predefined options, choose

  • select for drop-down menus

  • check for checklist

  • autocomplete for input field with live search

Subproject Details

  • create a 2 x 8 table

  • select the Heading Column button so that the table headers are vertical

Project Title

Name the first row Title of Project and insert a Reporting block as below.

Project Type

In a new row

  • type Project Type

Next, create a dropdown menu with some predefined categories to describe the nature of the project.

  • insert a list-data block

  • nest the list-data with some list-option blocks

Each list-option is an entry in the dropdown menu.

Project Status

Next

  • create a row for Project Status

  • create a list-data block

  • nest the list-data with list-option blocks

  • insert the Status macro to customise selection items

Project Lead

Next

  • create the Project leader row

  • insert a list-data block

  • nest a user-options block inside the list-data block

For the groups parameter

  • insert a user group with all the project leaders

Project Members

Now for Project members

  • create a list-data block

  • choose auto complete for type

Project Dates

Next

  • create two date fields for the start and end date of project

  • insert a date-data block for each

Days Left: if-else statements and parameter injection

Finally, create a simple if-else statement that will display the days left for ongoing projects or display a completed message if the project is over.

With report-eval, we can do calculations on predefined variables, suppliers or Scaffolding data blocks.

In the report-eval block, we will perform the calculation of Days Left using parameter injection

  • set the parameters for report-eval

    • Name - Days Left

    • Default Value - 0

    • Format - ##,00

For the report-eval calculation formula, type

  • (%data:Project End Date > date:milliseconds% - %global:current date > date:milliseconds%)/1000/60/60/24

What does this mean?

In the first part

  • %data:Project End Date calls a Scaffolding Data block that contains the end date of the project

Next

  • a keychain is used to convert this date object to milliseconds

The second part

  •  %global:current date calls the current date via the Global supplier

Then

  • a keychain is also used to convert the date object into milliseconds

Together, the above formula means

  • convert both end date and current date into milliseconds

  • get the difference (in milliseconds)

  • convert back to days with division

The report-eval variable can then be accessed via the Variable supplier. The key is the name of the report-eval block (variable:Days Left).

To create a report-block macro for the if-else statement, in the report-block macro

  • insert a local-reporter block

  • set the keychain to @self

Next

  • create a number-filter macro

  • set the keychain to variable:Days Left

  • set Above Value to 0

  • insert a report-body block

  • set injected to true

Inside the report-body block

  • type %variable:Days Left > number:#% day(s)

Now create the 'else' statement

  • insert another number-filter macro

  • set the keychain to variable:Days Left

  • set Below Value to 0

  • insert a report-body block

  • type This project has ended

This displays a report-block as below.

Subproject details livetemplate

<table class="relative-table wrapped" style="width: 37.7372%;"> <colgroup> <col style="width: 36.1757%;"/> <col style="width: 63.5228%;"/> </colgroup> <tbody> <tr> <th>Title of project</th> <td> <div class="content-wrapper"> <p> <ac:structured-macro ac:macro-id="1eb06ca4-9a7f-4946-9c72-6f493f8f7f8f" ac:name="report-info" ac:schema-version="1"> <ac:parameter ac:name="">content:title</ac:parameter> </ac:structured-macro> </p> </div> </td> </tr> <tr> <th colspan="1">Project type</th> <td colspan="1"> <div class="content-wrapper"> <p> <ac:structured-macro ac:macro-id="06461ea1-55c1-4dad-bbc0-bb49b59e26b4" ac:name="list-data" ac:schema-version="1"> <ac:parameter ac:name="name">Project Type</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:rich-text-body> <ac:structured-macro ac:macro-id="95e3e9b0-111c-49a3-9b38-c82e97e2afc7" ac:name="list-option" ac:schema-version="1"> <ac:parameter ac:name="sortValue">1</ac:parameter> <ac:parameter ac:name="label">Equipment</ac:parameter> <ac:parameter ac:name="value">Equipment</ac:parameter> <ac:rich-text-body> <p> Equipment</p> </ac:rich-text-body> </ac:structured-macro> <ac:structured-macro ac:macro-id="27e84db2-015a-41e9-9513-360260d38343" ac:name="list-option" ac:schema-version="1"> <ac:parameter ac:name="sortValue">2</ac:parameter> <ac:parameter ac:name="label">Human Resources</ac:parameter> <ac:parameter ac:name="value">Human Resources</ac:parameter> <ac:rich-text-body> <p>Human Resources</p> </ac:rich-text-body> </ac:structured-macro> <ac:structured-macro ac:macro-id="eebd563b-e845-4f89-a08b-773e9fb1bdd4" ac:name="list-option" ac:schema-version="1"> <ac:parameter ac:name="sortValue">3</ac:parameter> <ac:parameter ac:name="label">Marketing</ac:parameter> <ac:parameter ac:name="value">Marketing</ac:parameter> <ac:rich-text-body> <p>Marketing</p> </ac:rich-text-body> </ac:structured-macro> <ac:structured-macro ac:macro-id="04eeed5f-dfef-492b-bbe4-ffec0ee09d94" ac:name="list-option" ac:schema-version="1"> <ac:parameter ac:name="sortValue">4</ac:parameter> <ac:parameter ac:name="label">Software</ac:parameter> <ac:parameter ac:name="value">Software</ac:parameter> <ac:rich-text-body> <p>Software</p> </ac:rich-text-body> </ac:structured-macro> <ac:structured-macro ac:macro-id="3b4806a9-6e50-4d52-9393-91d79b922e15" ac:name="list-option" ac:schema-version="1"> <ac:parameter ac:name="sortValue">5</ac:parameter> <ac:parameter ac:name="label">Others</ac:parameter> <ac:parameter ac:name="value">Others</ac:parameter> <ac:rich-text-body> <p>Others</p> </ac:rich-text-body> </ac:structured-macro> </ac:rich-text-body> </ac:structured-macro> </p> </div> </td> </tr> <tr> <th colspan="1">Project status</th> <td colspan="1"> <div class="content-wrapper"> <p> <ac:structured-macro ac:macro-id="7b9af378-8611-4bc1-86df-a576367a655b" ac:name="list-data" ac:schema-version="1"> <ac:parameter ac:name="name">Project Status</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:rich-text-body> <ac:structured-macro ac:macro-id="bc5aef71-f6de-4cf3-8099-86feccbbea00" ac:name="list-option" ac:schema-version="1"> <ac:parameter ac:name="sortValue">1</ac:parameter> <ac:parameter ac:name="label">Unstarted</ac:parameter> <ac:parameter ac:name="value">Unstarted</ac:parameter> <ac:rich-text-body> <p> <ac:structured-macro ac:macro-id="1dc308a4-d0b0-4611-a03a-87fa7f8141ce" ac:name="status" ac:schema-version="1"> <ac:parameter ac:name="colour">Grey</ac:parameter> <ac:parameter ac:name="title">Unstarted</ac:parameter> <ac:parameter ac:name=""/> </ac:structured-macro> </p> </ac:rich-text-body> </ac:structured-macro> <ac:structured-macro ac:macro-id="5053a7df-450f-4b38-ad46-bad0111b4186" ac:name="list-option" ac:schema-version="1"> <ac:parameter ac:name="sortValue">2</ac:parameter> <ac:parameter ac:name="label">In progress</ac:parameter> <ac:parameter ac:name="value">In progress</ac:parameter> <ac:rich-text-body> <p> <ac:structured-macro ac:macro-id="27c86cda-4642-4289-b044-05efd23bcd3f" ac:name="status" ac:schema-version="1"> <ac:parameter ac:name="colour">Yellow</ac:parameter> <ac:parameter ac:name="title">In Progress</ac:parameter> <ac:parameter ac:name=""/> </ac:structured-macro> </p> </ac:rich-text-body> </ac:structured-macro> <ac:structured-macro ac:macro-id="d9124413-7181-4b77-ac38-3e72539eb4d2" ac:name="list-option" ac:schema-version="1"> <ac:parameter ac:name="sortValue">3</ac:parameter> <ac:parameter ac:name="label">Awaiting approval</ac:parameter> <ac:parameter ac:name="value">Awaiting approval</ac:parameter> <ac:rich-text-body> <p> <ac:structured-macro ac:macro-id="e8fa6644-a9fe-486e-9973-47d3ba0f1b1f" ac:name="status" ac:schema-version="1"> <ac:parameter ac:name="colour">Blue</ac:parameter> <ac:parameter ac:name="title">Awaiting Approval</ac:parameter> <ac:parameter ac:name=""/> </ac:structured-macro> </p> </ac:rich-text-body> </ac:structured-macro> <ac:structured-macro ac:macro-id="d401ff0b-6e1e-4e8d-85a8-f79c9dc53a79" ac:name="list-option" ac:schema-version="1"> <ac:parameter ac:name="sortValue">4</ac:parameter> <ac:parameter ac:name="label">Completed</ac:parameter> <ac:parameter ac:name="value">Completed</ac:parameter> <ac:rich-text-body> <p> <ac:structured-macro ac:macro-id="18c4d013-92c7-4465-99b0-ac373d968a5c" ac:name="status" ac:schema-version="1"> <ac:parameter ac:name="colour">Green</ac:parameter> <ac:parameter ac:name="title">Completed</ac:parameter> <ac:parameter ac:name=""/> </ac:structured-macro> </p> </ac:rich-text-body> </ac:structured-macro> </ac:rich-text-body> </ac:structured-macro> </p> </div> </td> </tr> <tr> <th>Project leader</th> <td> <div class="content-wrapper"> <p> <ac:structured-macro ac:macro-id="721b955c-610a-4a26-997f-18e9da0339fd" ac:name="list-data" ac:schema-version="1"> <ac:parameter ac:name="name">Project Leader</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:rich-text-body> <ac:structured-macro ac:macro-id="399b7252-b502-4f71-b6ad-9f3c6e3d98a5" ac:name="user-options" ac:schema-version="1"> <ac:parameter ac:name="groups">pmd-project-leaders</ac:parameter> <ac:rich-text-body> <p> </p> </ac:rich-text-body> </ac:structured-macro> </ac:rich-text-body> </ac:structured-macro> </p> </div> </td> </tr> <tr> <th>Project members</th> <td> <div class="content-wrapper"> <p> <ac:structured-macro ac:macro-id="86803746-577d-420f-b6cf-47fa43a0c9ea" ac:name="list-data" ac:schema-version="1"> <ac:parameter ac:name="multiple">true</ac:parameter> <ac:parameter ac:name="name">Project Members</ac:parameter> <ac:parameter ac:name="type">auto complete</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:parameter ac:name="blankText">No members</ac:parameter> <ac:rich-text-body> <ac:structured-macro ac:macro-id="bb91a8ee-a1cb-41ab-ab06-8c967c7ac7c7" ac:name="user-options" ac:schema-version="1"> <ac:parameter ac:name="groups">pmd-project-members</ac:parameter> <ac:rich-text-body> <p> </p> </ac:rich-text-body> </ac:structured-macro> </ac:rich-text-body> </ac:structured-macro> </p> </div> </td> </tr> <tr> <th>Start date</th> <td> <div class="content-wrapper"> <p> <ac:structured-macro ac:macro-id="b4b0ca7a-ec0c-4d7d-ae2c-58ce87ca0fe9" ac:name="date-data" ac:schema-version="1"> <ac:parameter ac:name="format">dd MMMM yyyy</ac:parameter> <ac:parameter ac:name="name">Project Start Date</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:plain-text-body><![CDATA[ ]]></ac:plain-text-body> </ac:structured-macro> </p> </div> </td> </tr> <tr> <th>End date</th> <td> <div class="content-wrapper"> <p> <ac:structured-macro ac:macro-id="f6f0a856-87d6-4aff-a616-e446a78d9bea" ac:name="date-data" ac:schema-version="1"> <ac:parameter ac:name="format">dd MMMM yyyy</ac:parameter> <ac:parameter ac:name="name">Project End Date</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:plain-text-body><![CDATA[ ]]></ac:plain-text-body> </ac:structured-macro> </p> </div> </td> </tr> <tr> <th colspan="1">Days left</th> <td colspan="1"> <div class="content-wrapper"> <p> <ac:structured-macro ac:macro-id="e1062e71-f8d0-4427-8882-e44dac773b66" ac:name="report-eval" ac:schema-version="1"> <ac:parameter ac:name="default">0</ac:parameter> <ac:parameter ac:name="hidden">true</ac:parameter> <ac:parameter ac:name="format">##,00</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:parameter ac:name="">Days Left</ac:parameter> <ac:plain-text-body><![CDATA[(%data:Project End Date > date:milliseconds% - %global:current date > date:milliseconds%)/1000/60/60/24]]></ac:plain-text-body> </ac:structured-macro> <ac:structured-macro ac:macro-id="cb311386-9493-44a6-af29-ab7c190ed0c1" ac:name="report-block" ac:schema-version="1"> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:rich-text-body> <ac:structured-macro ac:macro-id="4e7c657c-0c99-4c95-b343-8f3f58fe4c05" ac:name="local-reporter" ac:schema-version="1"> <ac:parameter ac:name="">@self</ac:parameter> <ac:rich-text-body> </ac:rich-text-body> </ac:structured-macro> <p> <ac:structured-macro ac:macro-id="8381c68f-f058-47c6-839f-2a0f47f460cb" ac:name="number-filter" ac:schema-version="1"> <ac:parameter ac:name="aboveValue">0</ac:parameter> <ac:parameter ac:name="">variable:Days Left</ac:parameter> </ac:structured-macro> </p> <ac:structured-macro ac:macro-id="af877eef-0630-442c-adf7-dc516a17a520" ac:name="report-body" ac:schema-version="1"> <ac:parameter ac:name="injected">true</ac:parameter> <ac:rich-text-body> <p>%variable:Days Left &gt; number:#% day(s)</p> </ac:rich-text-body> </ac:structured-macro> <p> <ac:structured-macro ac:macro-id="20f5798d-143e-41d8-9569-dd0564fd327c" ac:name="number-filter" ac:schema-version="1"> <ac:parameter ac:name="belowValue">0</ac:parameter> <ac:parameter ac:name="">variable:Days Left</ac:parameter> </ac:structured-macro> </p> <ac:structured-macro ac:macro-id="90136fad-3ffa-45ae-bfa9-17fd2df2f8ea" ac:name="report-body" ac:schema-version="1"> <ac:rich-text-body> <p>This project has ended</p> </ac:rich-text-body> </ac:structured-macro> </ac:rich-text-body> </ac:structured-macro> </p> </div> </td> </tr> </tbody> </table>

Milestones

Now create a form that tabulates all the related milestones of each subproject, along with the due date and budget.

Add a milestones table

  • insert a table-data macro

    • name it Project Milestones

  • set initial rows to 1

Within the table-data macro

  • insert a 10 x 2 table

Select the Heading Row button so that the table headers are horizontal.

Milestone ID

  • name the first column ID

  • insert a number-data macro in the second row.

Milestone name

  • name the second column Name

  • insert a text-data macro in the second row

Choose line or area for the type, depending on the length of milestone names.

Due date

  • name the third column Due date

  • insert a date-data macro in the second row

Enter dd MMMM yyyy for the Display Format.

Status

  • name the fourth column Status

  • insert a list-data macro in the second row

  • nest the list-data macro with some list-option macro blocks

As in the previous section, Project Details, make a dropdown menu to choose the milestone status.

Estimated time

  • name the fifth column Estimated time

  • insert a number-data block (to allow user to input hours estimated to complete a milestone)

Additionally, check Allow Decimal Values if you'd like users to input for example, 2.5 hours.

After the number-data block

  • type in hours (as below)

Actual time

  • name the sixth column Actual time

  • insert a number-data block (to allow user to input actual hours spent to achieve a milestone)

Additionally, check Allow Decimal Values if you'd like users to input for example, 2.5 hours.

After the number-data block

  • type in hours, similar to the previous example

Time difference

  • name the seventh column Time difference

  • insert a eval-data block (to calculate the difference between actual time and estimated time)

In the eval-data block

  • type ${Actual Time}-${Estimated Time}

After the number-data block

  • type in hours, similar to the previous example

Budget

  • name the eighth column Budget

  • insert a number-data block (to allow user to input the budget allocated for a particular milestone)

  • edit the number-data block to

    • check Allow Decimal Values

    • set the Display Format as $#,##0.00

Expenditure

  • name the ninth column Actual expenditure

  • insert a number-data block (to allow user to input the actual amount spent on a particular milestone)

  • edit the number-data block to

    • check Allow Decimal Values

    • set the Display Format as $#,##0.00

Expenditure Difference

  • name the last column Expenditure difference

  • insert an eval-data block (to calculate the difference between actual expenditure and budget allocation)

  • edit the eval-data block to

    • set the Display Format as $#,##0.00

In the eval-data block

  • type ${Budget}-${Expenditure}

Total Budget and Expenditure

After the table, add two eval-data blocks to calculate the sum of all milestone's budget allocation and actual expenditure.

Subproject milestones livetemplate

<h2>Milestones</h2> <ac:structured-macro ac:macro-id="02300977-32f9-47f8-b823-7bd706ddde57" ac:name="table-data" ac:schema-version="1"> <ac:parameter ac:name="name">Project Milestones</ac:parameter> <ac:parameter ac:name="initialRows">1</ac:parameter> <ac:rich-text-body> <table class="relative-table wrapped" style="width: 100.0%;"> <colgroup> <col/> <col style="width: 16.3506%;"/> <col style="width: 16.3506%;"/> <col style="width: 18.24%;"/> <col style="width: 16.3506%;"/> <col style="width: 16.3506%;"/> <col style="width: 16.3506%;"/> <col/> <col/> <col/> </colgroup> <tbody> <tr> <th colspan="1">ID</th> <th> <p>Name</p> </th> <th colspan="1">Due Date</th> <th colspan="1">Status</th> <th colspan="1"> <span>Estimated time</span> </th> <th>Actual time</th> <th>Time difference</th> <th colspan="1">Budget</th> <th colspan="1">Actual expenditure</th> <th colspan="1">Expenditure Difference</th> </tr> <tr> <td colspan="1"> <div class="content-wrapper"> <p> <ac:structured-macro ac:macro-id="48cbccf4-7374-494a-ae3a-6a6ddeaa70ef" ac:name="number-data" ac:schema-version="1"> <ac:parameter ac:name="minValue">1</ac:parameter> <ac:parameter ac:name="name">Milestone ID</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:plain-text-body><![CDATA[ ]]></ac:plain-text-body> </ac:structured-macro> </p> </div> </td> <td colspan="1"> <div class="content-wrapper"> <p> <ac:structured-macro ac:macro-id="5f5a0300-b130-4e34-a483-f95d8aeca74f" ac:name="text-data" ac:schema-version="1"> <ac:parameter ac:name="name">Name</ac:parameter> <ac:parameter ac:name="type">line</ac:parameter> <ac:parameter ac:name="content">text</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:rich-text-body> <p> </p> </ac:rich-text-body> </ac:structured-macro> </p> </div> </td> <td colspan="1"> <div class="content-wrapper"> <p> <ac:structured-macro ac:macro-id="0ae3bac1-4a49-4a48-9804-89232ba09483" ac:name="date-data" ac:schema-version="1"> <ac:parameter ac:name="format">dd MMMM yyyy</ac:parameter> <ac:parameter ac:name="name">Date</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:plain-text-body><![CDATA[ ]]></ac:plain-text-body> </ac:structured-macro> </p> </div> </td> <td colspan="1"> <div class="content-wrapper"> <p> <ac:structured-macro ac:macro-id="b201093c-948b-49d5-94b9-6791ff312376" ac:name="list-data" ac:schema-version="1"> <ac:parameter ac:name="name">Status</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:rich-text-body> <ac:structured-macro ac:macro-id="1eb3887e-33ed-4191-b0fd-310c920633b9" ac:name="list-option" ac:schema-version="1"> <ac:parameter ac:name="sortValue">1</ac:parameter> <ac:parameter ac:name="label">Unstarted</ac:parameter> <ac:parameter ac:name="value">Unstarted</ac:parameter> <ac:rich-text-body> <p> <ac:structured-macro ac:macro-id="a7a95a35-01f9-44a0-a66e-674bb4a28b08" ac:name="status" ac:schema-version="1"> <ac:parameter ac:name="colour">Grey</ac:parameter> <ac:parameter ac:name="title">Unstarted</ac:parameter> <ac:parameter ac:name=""/> </ac:structured-macro> </p> </ac:rich-text-body> </ac:structured-macro> <ac:structured-macro ac:macro-id="18967985-f49f-45e4-bd54-2a0103a7d0e9" ac:name="list-option" ac:schema-version="1"> <ac:parameter ac:name="sortValue">2</ac:parameter> <ac:parameter ac:name="label">In progress</ac:parameter> <ac:parameter ac:name="value">In progress</ac:parameter> <ac:rich-text-body> <p> <ac:structured-macro ac:macro-id="d5094294-8d8a-4a40-aa81-1c763c3bc5fb" ac:name="status" ac:schema-version="1"> <ac:parameter ac:name="colour">Yellow</ac:parameter> <ac:parameter ac:name="title">In Progress</ac:parameter> <ac:parameter ac:name=""/> </ac:structured-macro> </p> </ac:rich-text-body> </ac:structured-macro> <ac:structured-macro ac:macro-id="88e7dfd5-da14-45c9-9128-b85b7a99f439" ac:name="list-option" ac:schema-version="1"> <ac:parameter ac:name="sortValue">3</ac:parameter> <ac:parameter ac:name="label">Awaiting approval</ac:parameter> <ac:parameter ac:name="value">Awaiting approval</ac:parameter> <ac:rich-text-body> <p> <ac:structured-macro ac:macro-id="e9907196-c52b-49c4-b82c-c28df13f1149" ac:name="status" ac:schema-version="1"> <ac:parameter ac:name="colour">Blue</ac:parameter> <ac:parameter ac:name="title">Awaiting Approval</ac:parameter> <ac:parameter ac:name=""/> </ac:structured-macro> </p> </ac:rich-text-body> </ac:structured-macro> <ac:structured-macro ac:macro-id="bc457abe-1f19-46ad-9d59-7630f4105588" ac:name="list-option" ac:schema-version="1"> <ac:parameter ac:name="sortValue">4</ac:parameter> <ac:parameter ac:name="label">Completed</ac:parameter> <ac:parameter ac:name="value">Completed</ac:parameter> <ac:rich-text-body> <p> <ac:structured-macro ac:macro-id="5a51a925-52ce-4218-b2d4-c1d1de8df594" ac:name="status" ac:schema-version="1"> <ac:parameter ac:name="colour">Green</ac:parameter> <ac:parameter ac:name="title">Completed</ac:parameter> <ac:parameter ac:name=""/> </ac:structured-macro> </p> </ac:rich-text-body> </ac:structured-macro> </ac:rich-text-body> </ac:structured-macro> </p> </div> </td> <td colspan="1"> <div class="content-wrapper"> <p> <ac:structured-macro ac:macro-id="82c3d400-8d1e-4445-9ba4-ee5b23a1ea5b" ac:name="number-data" ac:schema-version="1"> <ac:parameter ac:name="name">Estimated Time</ac:parameter> <ac:parameter ac:name="decimal">true</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:plain-text-body><![CDATA[ ]]></ac:plain-text-body> </ac:structured-macro> </p>hours<p> </p> </div> </td> <td colspan="1"> <div class="content-wrapper"> <p> <ac:structured-macro ac:macro-id="2fe01a8b-f277-49c7-ab5f-141034afeaa3" ac:name="number-data" ac:schema-version="1"> <ac:parameter ac:name="name">Actual Time</ac:parameter> <ac:parameter ac:name="decimal">true</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:plain-text-body><![CDATA[ ]]></ac:plain-text-body> </ac:structured-macro> </p>hours<p> </p> </div> </td> <td colspan="1"> <div class="content-wrapper"> <p> <ac:structured-macro ac:macro-id="9fc6f0c0-2f20-4bea-8a5a-cfab409512ca" ac:name="eval-data" ac:schema-version="1"> <ac:parameter ac:name="name">Time Difference</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:plain-text-body><![CDATA[${Actual Time}-${Estimated Time}]]></ac:plain-text-body> </ac:structured-macro> </p>hours<p> </p> </div> </td> <td colspan="1"> <div class="content-wrapper"> <p> <ac:structured-macro ac:macro-id="54c0e6a7-d281-47ff-a44d-ed2e032f65f9" ac:name="number-data" ac:schema-version="1"> <ac:parameter ac:name="format">$#,##0.00</ac:parameter> <ac:parameter ac:name="name">Budget</ac:parameter> <ac:parameter ac:name="decimal">true</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:plain-text-body><![CDATA[ ]]></ac:plain-text-body> </ac:structured-macro> </p> </div> </td> <td colspan="1"> <div class="content-wrapper"> <p> <ac:structured-macro ac:macro-id="3d11761c-2359-4943-96c0-01d71b87799f" ac:name="number-data" ac:schema-version="1"> <ac:parameter ac:name="format">$#,##0.00</ac:parameter> <ac:parameter ac:name="name">Expenditure</ac:parameter> <ac:parameter ac:name="decimal">true</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:plain-text-body><![CDATA[ ]]></ac:plain-text-body> </ac:structured-macro> </p> </div> </td> <td colspan="1"> <div class="content-wrapper"> <p> <ac:structured-macro ac:macro-id="ed54b449-0c4c-4af8-8737-c2ee61253e53" ac:name="eval-data" ac:schema-version="1"> <ac:parameter ac:name="format">$#,##0.00</ac:parameter> <ac:parameter ac:name="name">Project Budget Difference</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:plain-text-body><![CDATA[${Budget}-${Expenditure}]]></ac:plain-text-body> </ac:structured-macro> </p> </div> </td> </tr> </tbody> </table> </ac:rich-text-body> </ac:structured-macro> <p> </p> <h4>Total budget:</h4> <p> <ac:structured-macro ac:macro-id="18443199-58ab-489d-8f6f-a4506f180a11" ac:name="eval-data" ac:schema-version="1"> <ac:parameter ac:name="format">$#,##0.00</ac:parameter> <ac:parameter ac:name="name">Budget Total</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:plain-text-body><![CDATA[sumtable("Project Milestones", "Budget")]]></ac:plain-text-body> </ac:structured-macro> </p> <h4>Total expenditure:</h4> <p> <ac:structured-macro ac:macro-id="2a409a81-f48d-4406-bce3-1991cd3f72cb" ac:name="eval-data" ac:schema-version="1"> <ac:parameter ac:name="format">$#,##0.00</ac:parameter> <ac:parameter ac:name="name">Expenditure Total</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:plain-text-body><![CDATA[sumtable("Project Milestones", "Expenditure")]]></ac:plain-text-body> </ac:structured-macro> </p>




Notes section

Create a Notes section for extra notes related to the project, or other details that are not captured in the Milestones section.

The hidden-data block shows a message when user has not added any notes in the text-data block (Optional). 

In this case, we set the name of our text-data block as Project Notes, so the condition for hidden-data is when Project Notes is not empty, hide this message.

Subproject notes livetemplate

<h2>Notes</h2> <p> <ac:structured-macro ac:macro-id="2abf2f98-7d7f-458b-bf5b-a327eea9e277" ac:name="hidden-data" ac:schema-version="1"> <ac:parameter ac:name="whenNotEmpty">Project Notes</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:rich-text-body> <p> <em>No notes for this project.</em> </p> </ac:rich-text-body> </ac:structured-macro> <ac:structured-macro ac:macro-id="b557f535-98ad-44cc-92f7-8b6a73a2f45c" ac:name="text-data" ac:schema-version="1"> <ac:parameter ac:name="name">Project Notes</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:rich-text-body> <p> </p> </ac:rich-text-body> </ac:structured-macro> </p> 




This section is useful when documents like invoices, quotations are related to a particular subproject.

The attachment-data block allows users to quickly upload subproject related documents and find them easily in the future.

Similar to the Notes section, there is a hidden-data block that shows a message when there are no attachments in this section. 

  • insert a hidden-data block

  • set When Has Rows to Related Documents

Now

  • insert a table-data block

    • name the table-data block Related Documents.

In the table-data block

  • insert 2 x 2 table

  • name the first column Attachment

  • insert an attachment-data macro in the second row

  • name the second column Description

  • insert a text-data macro in the second row

  • edit the text-data macro

    • choose either line or area for the type, depending on the length of attachment descriptions


Subproject documents livetemplate




Full source

Next