Part 6 - Creating the team members page
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
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 Keychoose 'ascending' for Order
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 a report-info block inside this report-column
edit the report-info block
name the Key
user:full name
insert a report-column block
name this column Email
insert a report-info block inside this report-column
edit the report-info block
name the Key
user:email
Department
insert a report-column block
name this column Department
insert a report-info block inside this report-column
edit the report-info block
name the Key
user:department
Position
insert a report-column block
name this column Position
insert a report-info block inside this report-column
edit the report-info block
name the Key
user:position
Project Lead
This column will show a list of projects that the user is involved in as a leader.
insert a report-column block
name this column Project Lead or Leading Projects
insert a report-list block inside this report-column
insert a content-reporter block within the report-list block
edit the content-reporter block
set Type to
pages
set Labels to
subproject
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%
Now that we have the content and structure
insert a report-body block under content-reporter
insert 2 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
The key data:Project Leader
is fetching data from a Scaffolding block we used in our subprojects, like this one:
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.
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:
Projects Involved In
This column is used to display a list of projects that the user is involved in as a member.
insert a report-column block
name this column Projects Involved In
insert a report-list block inside this report-column
insert a content-reporter block within the report-list block
edit the content-reporter block
set Type to
pages
set Labels to
subproject
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%
Now that we have the content and structure
insert a report-body block under content-reporter
insert 2 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