4.3. Report for a List of Entities Filtered by Query
Now let us have a look at the second Report for a List of Entities for a list of entities filtered by query. To demonstrate the use case of this report type use we will being complications to our task. As before the report should contain a list of books (with their titles and department names), but only added after a certain date.
Let us set the details of the report like in the previous case:
-
Entity - report entity -
library$BookInstance
. -
Format of template file - output file format - XSLX.
-
Report name -
'Recently added book items'
.
Then select the Report for list of entities, selected by query report type.
The selected report type enables us to select the list of entities that match the specified conditions. In order to set the query, click Set query link below.
The Define query window appears. As you can see the window is similar to the generic filter window. Here you specify conditions, combine them into AND/OR groups and configure their settings.
In order to add new query conditions, click Add. Select Created at
attribute in the appeared window. Now the attribute is added to the query conditions tree and the right hand side panel displays its properties. Select an operator (>=).
After saving the query, click Next and move to library$BookInstance
attributes selection. We move BookItem.Publication.Book.Name
and BookItem.LibraryDepartment.Name
attributes to the right. Click OK to move on to accomplish the first stage.
Press Next → Save to save the report. The report will look as follows:
The editor allows making the report structure more sophisticated by adding new bands and data sets, as well as configuring the report template design, localization, access rights.
For instance, we can switch to Parameters and Values tab and modify the query parameter in the Parameters list: Date
instead of the standard CreateTs1
.
After all, let us add the Report button that runs the report right from the library departments browser.
In order to do this, we need to define a button in the librarydepartment-browse.xml
screen descriptor:
<table id="libraryDepartmentTable"
...
<buttonsPanel id="buttonsPanel">
...
<button id="reportBtn"
caption="msg://reportBtn"/>
</buttonsPanel>
</table>
After that, inject the button in the screen controller:
@Inject
private Button reportBtn;
and assign RunReportAction
to the button in the overridden init()
method:
reportBtn.setAction(new RunReportAction("report"));
The Report button will appear in the library departments browser, displaying the list of all reports available in the system in one click. In order to run the report, select Recently added book items in the list, specify the date and click Run report.
The output is as follows: