I wonder if it is possible to perform more than one inline drilldown.
Here is what I would like to do:
I have been using the Table - inline drilldown from the Sideview utils (3.2.6) as starting point.
I understand how to pass data from the clicked row of table A to narrow search B.
However, I struggle to see how step 5. could be made to work given the $row.fields.xxxx$ mechanism of passing data.
When you have more than one layer of inline drilldown going on, and you need somewhere in there to refer to more than one layer's worth of tokens, you sometimes have to change the "name" param of Table away from its default of "row". This param determines the "row" in $row.searchTerms$ and $row.fields.someFieldName$, so by changing the prefix on different drilldown layers you can avoid collisions.
<module name="Search">
<param name="search"> (Query A)</param>
<!-- this table will render the error codes. -->
<module name="Pager">
<module name="Table">
<module name="Search">
<param name="search">| inputlookup errorCodeToBugTicket | search errorCode="$row.fields.errorCode$"</param>
<!-- this table will render the bug tickets for the error code the user clicked. -->
<module name="Pager">
<module name="Table">
<param name="name">bugTicketRow</param>
<module name="Search">
<param name="search">SOME SEARCH TO SHOW DETAILS INCORPORATING BOTH $row.fields.errorCode$ and $bugTicketRow.fields.ticketId$</param>
<module name="HTML">
<param name="html"><![CDATA[
<h3>Details for $bugTicketRow.fields.ticketId$ and $row.fields.errorCode$ $search.timeRange.label$</h3>
]]></param>
</module>
<!-- this table will show whatever details around the search that incorporates both layers of drilldown tokens.. -->
<module name="Pager">
<module name="Table" />
</module>
</module>
</module>
</module>
</module>
</module>
</module>
</module>
When you have more than one layer of inline drilldown going on, and you need somewhere in there to refer to more than one layer's worth of tokens, you sometimes have to change the "name" param of Table away from its default of "row". This param determines the "row" in $row.searchTerms$ and $row.fields.someFieldName$, so by changing the prefix on different drilldown layers you can avoid collisions.
<module name="Search">
<param name="search"> (Query A)</param>
<!-- this table will render the error codes. -->
<module name="Pager">
<module name="Table">
<module name="Search">
<param name="search">| inputlookup errorCodeToBugTicket | search errorCode="$row.fields.errorCode$"</param>
<!-- this table will render the bug tickets for the error code the user clicked. -->
<module name="Pager">
<module name="Table">
<param name="name">bugTicketRow</param>
<module name="Search">
<param name="search">SOME SEARCH TO SHOW DETAILS INCORPORATING BOTH $row.fields.errorCode$ and $bugTicketRow.fields.ticketId$</param>
<module name="HTML">
<param name="html"><![CDATA[
<h3>Details for $bugTicketRow.fields.ticketId$ and $row.fields.errorCode$ $search.timeRange.label$</h3>
]]></param>
</module>
<!-- this table will show whatever details around the search that incorporates both layers of drilldown tokens.. -->
<module name="Pager">
<module name="Table" />
</module>
</module>
</module>
</module>
</module>
</module>
</module>
</module>
Excellent, specifying the prefix to avoid collisions was precisely what I was missing. Thanks a lot.
It should work same as step 3. The query C code should be nested within table B and pass the value from table B to query C using $row.fields.XXX$.