Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
minLevel1
maxLevel2
outlinefalse
typeflat
separatorpipe
printablefalse

Overview

The team members page lists all the users that belong to the project. This is done by filtering and displaying a list of users based on a user group.

For this project, 2 user groups are created

...

  • pmd-project-leaders

...

  • -

...

  • all the project leaders involved in the project

...

  • pmd-project-members

...

  • - all the project members involved in the project

...

Using Reporting, all the users that belong is these two groups will be listed here along with other relevant details

...

.

...

Suppliers used

...

...

When to use the Collection Supplier

Use the object supplier if you are unsure of the object type. Pair any key with an object:class keychain and it will return the type of object, for example:

data:Project Members > object:class returns

class java.util.ArrayList

which means the Project Members Scaffolding data is stored as an Array List.

This keychain is useful for debugging purposes.

Content and Structure

...

Set the main structure of our report, which is a table. 

...

  • create a report-table macro

Esure to check Injected as we

...

use parameter injection later in the report.

...

Define who to report using a user-reporter block

...

  • add a user-reporter block

  • nest this block inside the report-table block

...

...

  • edit the user-reporter block

...

    • type in Groups pmd-project-members, pmd-project-leaders

...

    •  

Info

Reporting only fetches users from those groups

...

In the user-reporter block

...

  • insert a text-sort block

...

...

  • edit the text-sort block

...

    • type user:full name  for Key

...

...

    • choose 'ascending' for Order

...

Info

This

...

sorts the users in ascending order based on their full name.

Now we are ready to setup the report columns.

User Name

...

Within the report-table block

...

  • insert a report-column macro underneath the user-reporter block

...

...

    • name this column Name

...

  • insert report-info block inside this report-column

...

...

  • edit the report-info block

...

    • name the Key user:full name

...

Info

Reporting

...

fetches the user's full name.

Email

...

  • insert report-column block

...

    • name this column Email

...

...

  • insert report-info block inside this report-column

...

...

  • edit the report-info block

...

    • name the Key user:email

...

Info

Reporting

...

fetches the user's email.

Department

...

  • insert report-column block

...

    • name this column Department

...

...

  • insert report-info block inside this report-column

...

...

  • edit the report-info block

...

    • name the Key user:department

...

Info

Reporting

...

fetches the user's department.

Position

...

  • insert report-column block

...

    • name this column Position

...

...

  • insert report-info block inside this report-column

...

...

  • edit the report-info block

...

    • name the Key user:position

...

Info

Reporting

...

fetches the user's position.

Project Lead

This column will show a list of projects that the user is involved in as a leader.

...

  • insert report-column block

...

    • name this column Project Lead or Leading Projects

...

...

  • insert report-list block inside this report-column

...

Info

We will now report a list within the current report's column.

...

  • insert content-reporter block within the report-list block

...

...

  • edit the content-reporter block

...

    • set Type to pages

...

    • set Labels to subproject

...

Info

This allows the collection of pages that are subprojects.

Inside the content-reporter block

...

  • insert a text-filter block

...

  • edit the text-filter block

...

    • name the

...

    • Key data:Project Leader > collection:first > user:full name

...

...

    • set Exact Value to %user

...

    • :full name%

Info

This is used to fetch subprojects that belong to the reporting user.

Now that we have the content and structure

...

  • insert a report-body block under content-reporter

...

...

  • insert report-info blocks inside report-body

...

For the first report-info block

...

  • name the Key page:title

...

  • check Link To Item

...

For the second report-info block

  • nest this second report-info block with a pair of parentheses and name the Key data:Project Status

Finally

...

  • insert a report-empty block under report-body

...

  • enter a message to display when the user is not leading any projects

...

Panel
titleWhat does this mean?

...

The key data:Project Leader is fetching data from a Scaffolding block we used in our subprojects, like this one:

...

Image Added

The Project Leader Scaffold data block

...

is returned in a list, so we use the Collection Supplier to fetch the first item in the list, and then finally

...

convert it to the user's full name.

Info

...

As we have the name of the project leader from the subproject, Exact Value can match the user in this current report to the full name returned from the content-reporter.

...

The reporter finds a list of subprojects with the Project Leader as a particular user and report it based on the current user in the table.

Based on the report-info blocks we used, the page title and subproject status is shown in the fifth column:

...

Image Added

Projects Involved In

This column

...

is used to display a list of projects that the user is involved in as a member.

...

  • insert report-column block

...

    • name this column Projects Involved In

...

...

  • insert report-list block inside this report-column

...

Info

We will now report a list within the current report's column.

...

  • insert content-reporter block within the report-list block

...

...

  • edit the content-reporter block

...

    • set Type to pages

...

    • set Labels to subproject

...

Info

This allows the reporting to collect pages that are subprojects.

Inside the content-reporter block

...

  • insert a text-filter block

...

  • edit the text-filter block

...

    • name the

...

    • Key data:Project Members > collection:first > user:full name

...

...

    • set Exact Value to %user:

...

    • full name%

Info

This is used to fetch subprojects that belong to the reporting user.

Now that we have the content and structure

...

  • insert a report-body block under content-reporter

...

...

  • insert report-info blocks inside report-body

...

For the first report-info block

...

  • name the

...

  • Key page:title

...

  • check Link To Item

...

For the second report-info block

  • nest this second report-info block with a pair of parentheses and name the Key data:Project Status

...

Finally

...

  • insert a report-empty block under report-body

...

  • enter a message to display when the user is not leading any projects

...

Macro Structure

...

Full source

...

Expand

...

titleTeam Members source code
Code Block

...

language

...

xml
 <ac:structured-macro ac:macro-id="3dd1fc83-efe2-43c3-918f-5b2e3f0c36c7" ac:name="report-table" ac:schema-version="1">
  <ac:parameter ac:name="injected">true</ac:parameter>
  <ac:rich-text-body>
    <ac:structured-macro ac:macro-id="62bc44dd-330c-47cd-9541-9b059767d41b" ac:name="user-reporter" ac:schema-version="1">
      <ac:parameter ac:name="groups">pmd-project-members, pmd-project-leaders</ac:parameter>
      <ac:rich-text-body>
        <p>
          <ac:structured-macro ac:macro-id="cbc30ac6-45d6-4a08-9424-4cb429f635d8" ac:name="text-sort" ac:schema-version="1">
            <ac:parameter ac:name="">user:full name</ac:parameter>
          </ac:structured-macro>
        </p>
      </ac:rich-text-body>
    </ac:structured-macro>
    <ac:structured-macro ac:macro-id="79416bad-fe3d-4857-af96-31391061ab98" ac:name="report-column" ac:schema-version="1">
      <ac:parameter ac:name="title">Name</ac:parameter>
      <ac:rich-text-body>
        <p>
          <ac:structured-macro ac:macro-id="b704da22-9ec4-4e28-89aa-dc00edd52c2f" ac:name="report-info" ac:schema-version="1">
            <ac:parameter ac:name="">user:full name</ac:parameter>
          </ac:structured-macro>
        </p>
        <p>
          <ac:structured-macro ac:macro-id="595d52b7-7980-4e31-9f14-c9c05d3dbbdf" ac:name="report-image" ac:schema-version="1">
            <ac:parameter ac:name="height">100px</ac:parameter>
            <ac:parameter ac:name="">user:picture</ac:parameter>
          </ac:structured-macro>
        </p>
      </ac:rich-text-body>
    </ac:structured-macro>
    <ac:structured-macro ac:macro-id="5f78a437-49d7-42a0-a926-130f20ffe812" ac:name="report-column" ac:schema-version="1">
      <ac:parameter ac:name="title">Email</ac:parameter>
      <ac:rich-text-body>
        <p>
          <ac:structured-macro ac:macro-id="25ff4798-098f-47ef-9724-74e39c502b8b" ac:name="report-info" ac:schema-version="1">
            <ac:parameter ac:name="">user:email</ac:parameter>
          </ac:structured-macro>
        </p>
      </ac:rich-text-body>
    </ac:structured-macro>
    <ac:structured-macro ac:macro-id="7ee52b81-276f-4166-8b22-66675a824f51" ac:name="report-column" ac:schema-version="1">
      <ac:parameter ac:name="title">Department</ac:parameter>
      <ac:rich-text-body>
        <p>
          <ac:structured-macro ac:macro-id="2251ab03-d1a1-4bf6-ad94-03d347598a07" ac:name="report-info" ac:schema-version="1">
            <ac:parameter ac:name="">user:department</ac:parameter>
          </ac:structured-macro>
        </p>
      </ac:rich-text-body>
    </ac:structured-macro>
    <ac:structured-macro ac:macro-id="0ab44f48-561c-4560-a8d0-6c4cb360d724" ac:name="report-column" ac:schema-version="1">
      <ac:parameter ac:name="title">Position</ac:parameter>
      <ac:rich-text-body>
        <p>
          <ac:structured-macro ac:macro-id="14f1c80e-704e-4d9f-b26c-537490559a30" ac:name="report-info" ac:schema-version="1">
            <ac:parameter ac:name="">user:position</ac:parameter>
          </ac:structured-macro>
        </p>
      </ac:rich-text-body>
    </ac:structured-macro>
    <ac:structured-macro ac:macro-id="fa958852-711f-4eca-ae47-9d3827cd8ee0" ac:name="report-column" ac:schema-version="1">
      <ac:parameter ac:name="title">Project Lead</ac:parameter>
      <ac:rich-text-body>
        <ac:structured-macro ac:macro-id="572542d6-833b-4603-9c26-66dcac23b582" ac:name="report-list" ac:schema-version="1">
          <ac:rich-text-body>
            <ac:structured-macro ac:macro-id="cf1f6ddc-916f-4e24-a18c-6f65b20df651" ac:name="content-reporter" ac:schema-version="1">
              <ac:parameter ac:name="types">page</ac:parameter>
              <ac:parameter ac:name="labels">subproject</ac:parameter>
              <ac:rich-text-body>
                <p>
                  <ac:structured-macro ac:macro-id="f786da63-34c9-4866-b81d-006597ea943e" ac:name="text-filter" ac:schema-version="1">
                    <ac:parameter ac:name="value">%user:full name%</ac:parameter>
                    <ac:parameter ac:name="">data:Project Leader &gt; collection:first &gt; user:full name</ac:parameter>
                  </ac:structured-macro>
                </p>
              </ac:rich-text-body>
            </ac:structured-macro>
            <ac:structured-macro ac:macro-id="67bf071d-f38a-4a9b-81e9-72b4e3eef72d" ac:name="report-body" ac:schema-version="1">
              <ac:rich-text-body>
                <p>
                  <ac:structured-macro ac:macro-id="209f7b33-e209-4007-b7cf-17327f19195b" ac:name="report-info" ac:schema-version="1">
                    <ac:parameter ac:name="link">true</ac:parameter>
                    <ac:parameter ac:name="">page:title</ac:parameter>
                  </ac:structured-macro> (<ac:structured-macro ac:macro-id="024b352f-13c8-4a7c-975c-d9f618b122fa" ac:name="report-info" ac:schema-version="1">
                    <ac:parameter ac:name="">data:Project Status</ac:parameter>
                  </ac:structured-macro>)</p>
              </ac:rich-text-body>
            </ac:structured-macro>
            <ac:structured-macro ac:macro-id="f1e9abb7-931c-46dd-a49f-ee2fed8b48e6" ac:name="report-empty" ac:schema-version="1">
              <ac:rich-text-body>
                <p>-</p>
              </ac:rich-text-body>
            </ac:structured-macro>
          </ac:rich-text-body>
        </ac:structured-macro>
      </ac:rich-text-body>
    </ac:structured-macro>
    <ac:structured-macro ac:macro-id="533a4108-c490-4865-b8f1-f038b01970af" ac:name="report-column" ac:schema-version="1">
      <ac:parameter ac:name="title">Projects Involved In</ac:parameter>
      <ac:rich-text-body>
        <ac:structured-macro ac:macro-id="3291153f-0b65-4c57-bbae-7c89b8aa697f" ac:name="report-list" ac:schema-version="1">
          <ac:rich-text-body>
            <ac:structured-macro ac:macro-id="28c47ce1-f281-4929-bab7-2cf01df796a0" ac:name="content-reporter" ac:schema-version="1">
              <ac:parameter ac:name="types">page</ac:parameter>
              <ac:parameter ac:name="labels">subproject</ac:parameter>
              <ac:rich-text-body>
                <p>
                  <ac:structured-macro ac:macro-id="3e814921-5f99-4432-975c-5e02647d86c1" ac:name="text-filter" ac:schema-version="1">
                    <ac:parameter ac:name="value">%user:full name%</ac:parameter>
                    <ac:parameter ac:name="">data:Project Members &gt; collection:first &gt; user:full name</ac:parameter>
                  </ac:structured-macro>
                </p>
              </ac:rich-text-body>
            </ac:structured-macro>
            <ac:structured-macro ac:macro-id="145fc2d6-ab64-405f-bcd9-4a3d47696451" ac:name="report-body" ac:schema-version="1">
              <ac:rich-text-body>
                <p>
                  <ac:structured-macro ac:macro-id="7af69d75-5e6c-4c8a-9512-ea63ee77562c" ac:name="report-info" ac:schema-version="1">
                    <ac:parameter ac:name="link">true</ac:parameter>
                    <ac:parameter ac:name="">page:title</ac:parameter>
                  </ac:structured-macro> <span>(</span>
                  <ac:structured-macro ac:macro-id="b706d706-70bf-4f02-aaee-148d1d4ca16b" ac:name="report-info" ac:schema-version="1">
                    <ac:parameter ac:name="">data:Project Status</ac:parameter>
                  </ac:structured-macro>
                  <span>)</span>
                </p>
              </ac:rich-text-body>
            </ac:structured-macro>
            <ac:structured-macro ac:macro-id="5b95f0e8-3f2f-47c3-90ad-b7ddee1c46e1" ac:name="report-empty" ac:schema-version="1">
              <ac:rich-text-body>
                <p>-</p>
              </ac:rich-text-body>
            </ac:structured-macro>
          </ac:rich-text-body>
        </ac:structured-macro>
      </ac:rich-text-body>
    </ac:structured-macro>
  </ac:rich-text-body>
</ac:structured-macro>

...

Next

Part 7 - Creating the team resourcing page