Here is how Reporting Table View Macro works:
- Each macro contains a part of a report configuration, so at first, the Table View Macro enumerates all its body macros to find one Reporting Jira/Confluence Data Provider and one to many Reporting Items.
- After that a set of item fields, needed in all Reporting Table Items is defined. That is done to minimize the amount of data transfers and processing.
- Then the table view iterates through each Reporting Table Item macro to define all the headers. If the Reporting Table Item header content is a formula, it is calculated.
- Then the list of items, returned by the data provider is filtered in accordance with the filter parameter of the data provider.
- Then the table view iterates through every filtered item, and for each item iterates through each Reporting Table Item to define the value for the table cell. In most cases, item body is a formula, so it is calculated.
- Then the table view iterates through each Reporting Table Item macro to define all the footers. If the Reporting Table Item footer content is a formula, it is calculated.
- All these data enclosed into appropriate HTML code and sent as a result of macro work.
Here is how Reporting List View Macro works:
- Each macro contains a part of a report configuration, so at first, the List View Macro enumerates all its body macros to find the number of Reporting Jira/Confluence Data Providers and the similar number of Reporting List Items. So if there are two data providers, there should be two reporting list items - each for one list level.
- After that a set of item fields, needed in all Reporting List Items is defined. That is done to minimize the amount of data transfers and processing.
- Then the following is done for each data provider + appropriate reporting list item:
- If the data provider query is a formula - it is calculated to return the real query as a static string. For example one may reference a CurrentParentItem JSON object fields in this query.
- The data on the query is requested by the data provider from appropriate Jira/Confluence instance.
- The returned data is filtered according to the filter parameter of the appropriate data provider.
- The list view on appropriate level iterates through every item of the filtered list, and for each item creates a list entry. In most cases, item body is a formula, so it is calculated.
- All these data enclosed into appropriate HTML code and sent as a result of macro work. As a result we've got a multi-level list with appropriate items on each level.