Page Script for upper levels of items sorted by Page Parameters

Modified on Tue, 31 Jan, 2023 at 12:52 PM

In some cases, you may have a project where you filter items by a specific Page parameter, but then you decide that you want to load parents above the filtered items.
In this article, we will have a look at one case describing how to succeed in it.


Imagine all work packages in our project correspond to a specific department and there is a Page Parameter "department" that we use if we want to see the work packages for a specific department.


So we create a Page Parameter, then reference to the PP in the Query field and select the value we want to show.




With this approach, we will see the Work Packages as the highest level in the Gantt chart, but we also want to show 2 additional levels of the parent items for the work packages. 


To do so, we need to use the Page Script block and Polarion APIs. 

 

You can find all the Polarion classes and methods here: click here

Put the following code into the Page Script:

#set($parentLinkRole = "parent")
#set($parents = $objectFactory.newSet())


#foreach($i in $transaction.workItems.search.query("department.KEY:$pageParameters.department.toLucene()").sort(id))
    #if( !$i.isUnresolvable()  && $i.can().read())
      #foreach($p in $i.fields.linkedWorkItems.direct)
        #set($pItem = $p.fields.workItem)   
         #if(  !$pItem.isUnresolvable()  && $pItem.can().read() &&  $parentLinkRole.equals($p.fields.role.optionId))
                   #set($n = $parents.add($pItem.reference.id))


                    #foreach($pp in $pItem.get.fields.linkedWorkItems.direct)
                           #set($ppItem = $pp.fields.workItem)   
                          #if(  !$ppItem.isUnresolvable()  && $ppItem.can().read() &&  $parentLinkRole.equals($pp.fields.role.optionId))
                           #set($n = $parents.add($ppItem.reference.id))
                          #end
                      #end


          #end
        #end
      #end
#end


#set($parentQ = "id:(")
#foreach($id in $parents)
             #set($parentQ = "$parentQ $id")
#end
#set($parentQ = "$parentQ )")
<br>
parentQ = $parentQ
$!pageContext.put("parentQ", $parentQ)


With this script, we iterate through 2 parent levels and add to the Gantt Chart parents for WIs we got by Page parameter.


And then we put our value to the Query field to present it on the Gantt Chart: 


As you can see the Gantt Chart now loads 2 extra parent levels for the selected work items.




In case of issues, please send a message to: [email protected] 


Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article