Use Case
The client would like to see score trending information in a drilldown format. They would like to their levels broken out by month. They would also like upper-level scores to be maintained as the report is drilled down.
Report

Code
{|SHOWIF|OUTPUT_MODE=|EVALCONST(KNICKERS_OUTPUT_STANDARD)|}{DATATYPES.CONTROLS_START}
{DATATYPES.DEFAULT_DATE_FILTERS}
{DATATYPES.CONTROLS_END}{/|SHOWIF|}
<div class='results'>
{|VANISHIF|COUNT(DATATYPES.SHOW_DATATYPE)}
<div class='ui-state-highlight no-data'><p>No data was found to display</p></div>
{/|VANISHIF|}
{|SHOWIF|COUNT(DATATYPES.SHOW_DATATYPE)}
#if we have no group, show region by default
{|VANISHIF|DATATYPES.REPORT_CONFIG.SHOW_GROUP_ID}
{|CROSSTAB|}
<div>
{|LOOP|CROSSTAB.CLIENT_49_LEVEL_3(SORT=NAME,CROSSTAB_FILTER=NO_BLANKS)}
{|SHOWIF|LOOP.ISFIRST}
<table class='data'>
<thead>
<tr>
<th>Name</th>
{|LOOP|CLIENT_49_LEVEL_3.MONTH_YEAR(SORT=ORDER_NUM,CROSSTAB_FILTER=WITH_BLANKS_IN_RANGE)}
<th>{MONTH_YEAR.NAME}</th>
{/|LOOP|}
<th>All Months</th>
</tr>
</thead>
<tbody>
{/|SHOWIF|}
<tr>
<th><a href="../xjump/DrilldownTrending1392835806874?datatype={DATATYPES.REPORT_CONFIG.DATATYPE}&show_group_id=client_49_level_2&filterby=client_49_level_3_id,eq,{CLIENT_49_LEVEL_3.ID}&trending_date_after={DATATYPES.REPORT_CONFIG.TRENDING_DATE_AFTER.FORMATTED(Y-m-d)}&trending_date_before={DATATYPES.REPORT_CONFIG.TRENDING_DATE_BEFORE.FORMATTED(Y-m-d)}&MISC_VARS___LEV3ID={CLIENT_49_LEVEL_3.ID}">
{CLIENT_49_LEVEL_3.NAME}</a></th>
{|LOOP|CLIENT_49_LEVEL_3.MONTH_YEAR}
<td>{AVG(MONTH_YEAR.PERCENT_SCORE).ROUND}</td>
{/|LOOP|}
<td>{AVG(CLIENT_49_LEVEL_3.PERCENT_SCORE,CLIENT_49_LEVEL_3).ROUND}</td>
</tr>
{|VANISHIF|LOOP.HASNEXT}
<tr>
<th>Company</th>
{|LOOP|CLIENT_49_LEVEL_3.MONTH_YEAR}
<td>{AVG(MONTH_YEAR.PERCENT_SCORE,MONTH_YEAR).ROUND}</td>
{/|LOOP|}
<td>{AVG(CLIENT_49_LEVEL_3.PERCENT_SCORE,OVERALL).ROUND}</td>
</tr>
</tbody>
</table>
{/|VANISHIF|}
{/|LOOP|}
</div>
{/|CROSSTAB|}
{/|VANISHIF|}
#group is specified
{|SHOWIF|DATATYPES.REPORT_CONFIG.SHOW_GROUP_ID}
#level 2 or 1
{|VANISHIF|DATATYPES.REPORT_CONFIG.SHOW_GROUP_ID=datapoints}
{|CROSSTAB|}
<div>
{|LOOP|CROSSTAB.SHOW_GROUP(SORT=NAME,CROSSTAB_FILTER=NO_BLANKS)}
{|SHOWIF|LOOP.ISFIRST}
<table class='data'>
<thead>
<tr>
<th>Name</th>
{|LOOP|SHOW_GROUP.MONTH_YEAR(SORT=ORDER_NUM,CROSSTAB_FILTER=WITH_BLANKS_IN_RANGE)}
<th>{MONTH_YEAR.NAME}</th>
{/|LOOP|}
<th>All Months</th>
</tr>
</thead>
<tbody>
{/|SHOWIF|}
<tr>
<th>
{|SHOWIF|DATATYPES.REPORT_CONFIG.SHOW_GROUP_ID=client_49_level_2}
<a href="../xjump/DrilldownTrending1392835806874?datatype={DATATYPES.REPORT_CONFIG.DATATYPE}&show_group_id=client_49_level_1&filterby=client_49_level_2_id,eq,{SHOW_GROUP.ID};client_49_level_3_id,eq,{MISC_VARS.LEV3ID}&trending_date_after={DATATYPES.REPORT_CONFIG.TRENDING_DATE_AFTER.FORMATTED(Y-m-d)}&trending_date_before={DATATYPES.REPORT_CONFIG.TRENDING_DATE_BEFORE.FORMATTED(Y-m-d)}&MISC_VARS___LEV3ID={MISC_VARS.LEV3ID}&MISC_VARS___LEV2ID={SHOW_GROUP.ID}">
{SHOW_GROUP.NAME}</a>
{/|SHOWIF|}
{|SHOWIF|DATATYPES.REPORT_CONFIG.SHOW_GROUP_ID=client_49_level_1}
<a href="../xjump/DrilldownTrending1392835806874?datatype={DATATYPES.REPORT_CONFIG.DATATYPE}&show_group_id=datapoints&filterby=client_49_level_1_id,eq,{SHOW_GROUP.ID};client_49_level_3_id,eq,{MISC_VARS.LEV3ID};client_49_level_2_id,eq,{MISC_VARS.LEV2ID}&trending_date_after={DATATYPES.REPORT_CONFIG.TRENDING_DATE_AFTER.FORMATTED(Y-m-d)}&trending_date_before={DATATYPES.REPORT_CONFIG.TRENDING_DATE_BEFORE.FORMATTED(Y-m-d)}&MISC_VARS___LEV3ID={MISC_VARS.LEV3ID}&MISC_VARS___LEV2ID={MISC_VARS.LEV2ID}">
{SHOW_GROUP.NAME}</a>
{/|SHOWIF|}
</th>
{|LOOP|SHOW_GROUP.MONTH_YEAR}
<td>{AVG(MONTH_YEAR.PERCENT_SCORE).ROUND}</td>
{/|LOOP|}
<td>{AVG(SHOW_GROUP.PERCENT_SCORE,SHOW_GROUP).ROUND}</td>
</tr>
{/|LOOP|}
{/|CROSSTAB|}
{/|VANISHIF|}
#datapoints
{|SHOWIF|DATATYPES.REPORT_CONFIG.SHOW_GROUP_ID=datapoints}
<div>
<table id='datapoint-table' class='data'>
<thead>
<tr>
<th></th>
{|LOOP|DATATYPES.SHOW_DATATYPE.MONTH_YEAR.MEMBERS(SORT=ORDER_NUM,CROSSTAB_FILTER=WITH_BLANKS_IN_RANGE)}
<th>{MEMBERS.GROUP_MEMBER_NAME}</th>
{/|LOOP|}
<th>All Months</th>
</tr>
</thead>
<tbody>
{|CROSSTAB|}
{|LOOP|CROSSTAB.MONTH_YEAR(SORT=ORDER_NUM|DESC,CROSSTAB_FILTER=WITH_BLANKS_IN_RANGE)}
{|LOOP|MONTH_YEAR.DATAPOINTS}
<tr>
<td><a href="http://www.sassieshop.com/2su/clients/ClientShopView.php?JobID={DATAPOINTS.ID}" target="_blank">{DATAPOINTS.ID}</a></td>
{|LOOP|DATATYPES.SHOW_DATATYPE.MONTH_YEAR.MEMBERS(SORT=ORDER_NUM,CROSSTAB_FILTER=WITH_BLANKS_IN_RANGE)}
<td>{|SHOWIF|MEMBERS.GROUP_MEMBER_ID=|EVALTAG(MONTH_YEAR.ID)|}{DATAPOINTS.PERCENT_SCORE}{/|SHOWIF|}</td>
{/|LOOP|}
<td>{DATAPOINTS.PERCENT_SCORE}</td>
</tr>
{/|LOOP|}
{/|LOOP|}
{/|CROSSTAB|}
{/|SHOWIF|}
{|SHOWIF|DATATYPES.REPORT_CONFIG.SHOW_GROUP_ID=datapoints}
#district values
{|CROSSTAB|KEEP_ONLY_FILTERS=TRENDING_TIMESTAMP;CLIENT_49_LEVEL_2_ID;CLIENT_49_LEVEL_3_ID;CLIENT_49_LEVEL_1_ID}
{|LOOP|CROSSTAB.CLIENT_49_LEVEL_1(SORT=NAME,CROSSTAB_FILTER=NO_BLANKS)}
<tr>
<th>{CLIENT_49_LEVEL_1.NAME}</th>
{|LOOP|CLIENT_49_LEVEL_1.MONTH_YEAR(SORT=ORDER_NUM,CROSSTAB_FILTER=WITH_BLANKS_IN_RANGE)}
<td>{AVG(MONTH_YEAR.PERCENT_SCORE).ROUND}</td>
{/|LOOP|}
<td>{AVG(CLIENT_49_LEVEL_1.PERCENT_SCORE,CLIENT_49_LEVEL_1).ROUND}</td>
</tr>
{/|LOOP|}
{/|CROSSTAB|}
{/|SHOWIF|}
{|VANISHIF|DATATYPES.REPORT_CONFIG.SHOW_GROUP_ID=client_49_level_2}
#district values
{|CROSSTAB|KEEP_ONLY_FILTERS=TRENDING_TIMESTAMP;CLIENT_49_LEVEL_2_ID;CLIENT_49_LEVEL_3_ID}
{|LOOP|CROSSTAB.CLIENT_49_LEVEL_2(SORT=NAME,CROSSTAB_FILTER=NO_BLANKS)}
<tr>
<th>{CLIENT_49_LEVEL_2.NAME}</th>
{|LOOP|CLIENT_49_LEVEL_2.MONTH_YEAR(SORT=ORDER_NUM,CROSSTAB_FILTER=WITH_BLANKS_IN_RANGE)}
<td>{AVG(MONTH_YEAR.PERCENT_SCORE).ROUND}</td>
{/|LOOP|}
<td>{AVG(CLIENT_49_LEVEL_2.PERCENT_SCORE,CLIENT_49_LEVEL_2).ROUND}</td>
</tr>
{/|LOOP|}
{/|CROSSTAB|}
{/|VANISHIF|}
#region values
{|CROSSTAB|KEEP_ONLY_FILTERS=TRENDING_TIMESTAMP;CLIENT_49_LEVEL_3_ID}
{|LOOP|CROSSTAB.CLIENT_49_LEVEL_3(SORT=NAME,CROSSTAB_FILTER=NO_BLANKS)}
<tr>
<th>{CLIENT_49_LEVEL_3.NAME}</th>
{|LOOP|CLIENT_49_LEVEL_3.MONTH_YEAR(SORT=ORDER_NUM,CROSSTAB_FILTER=WITH_BLANKS_IN_RANGE)}
<td>{AVG(MONTH_YEAR.PERCENT_SCORE).ROUND}</td>
{/|LOOP|}
<td>{AVG(CLIENT_49_LEVEL_3.PERCENT_SCORE,CLIENT_49_LEVEL_3).ROUND}</td>
</tr>
{/|LOOP|}
{/|CROSSTAB|}
#company values
{|CROSSTAB|KEEP_ONLY_FILTERS=TRENDING_TIMESTAMP}
<tr>
<th>Company</th>
{|LOOP|CROSSTAB.MONTH_YEAR(SORT=ORDER_NUM,CROSSTAB_FILTER=WITH_BLANKS_IN_RANGE)}
<td>{AVG(MONTH_YEAR.PERCENT_SCORE).ROUND}</td>
{|VANISHIF|LOOP.HASNEXT}
<td>{AVG(MONTH_YEAR.PERCENT_SCORE,OVERALL).ROUND}</td>
{/|VANISHIF|}
{/|LOOP|}
</tr>
{/|CROSSTAB|}
</tbody>
</table>
</div>
{/|SHOWIF|}
{/|SHOWIF|}
</div>
CSS
/* css for CompanyOverviewDrilldown1350400998759 */
@import "themeroller/jquery.ui.all.css";
@import "chrome.theme.css";
@import "chrome.layout.css";
#data
{
width: auto;
margin: auto;
}
/***** clean *****/
body {
background: #99bbcc;
}
.wrap {
padding: 2em 0;
}
header.main, .header.main {
background: transparent;
border: 0;
padding: 0;
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
}
#content {
background: #ecf4f9;
border: 9px solid #fff;
padding: 0;
-moz-border-radius: 9px;
-webkit-border-radius: 9px;
border-radius: 9px;
-moz-box-shadow: 0px 0px 12px #3a6478;
-webkit-box-shadow: 0px 0px 12px #3a6478;
box-shadow: 0px 0px 12px #3a6478;
}
fieldset {
background: #ecf4f9;
border: 0;
padding: 1em;
text-align: right;
}
fieldset > div, fieldset .level-input {
float: left;
width: 25%;
text-align: left;
}
fieldset .date-input {
width: 50%;
}
fieldset .date-input div {
float: left;
margin-left: 15px;
}
fieldset .controls, fieldset .ui-controls {
float: right;
margin: 18px 18px 0 0;
text-align: right;
width: 40%;
}
fieldset .controls button {
background: #138bbf; /* Old browsers */
background: -moz-linear-gradient(top, #138bbf 0%, #72c1e5 50%, #2982a5 51%, #138bbf 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#138bbf), color-stop(50%,#72c1e5), color-stop(51%,#2982a5), color-stop(100%,#138bbf)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #138bbf 0%,#72c1e5 50%,#2982a5 51%,#138bbf 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #138bbf 0%,#72c1e5 50%,#2982a5 51%,#138bbf 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #138bbf 0%,#72c1e5 50%,#2982a5 51%,#138bbf 100%); /* IE10+ */
background: linear-gradient(to bottom, #138bbf 0%,#72c1e5 50%,#2982a5 51%,#138bbf 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#138bbf', endColorstr='#138bbf',GradientType=0 ); /* IE6-9 */
border: 1px solid #4095bf;
color: #fff;
font-size: 1.1em;
float: right;
margin-left: 1em;
padding: .25em 1em;
-moz-border-radius: 6px;
-webkit-border-radius: 6px;
border-radius: 6px;
}
fieldset .controls button:hover {
background: #2982a5;
border: 2px solid #111;
color: #fff;
-moz-box-shadow: 0px 0px 12px #fff;
-webkit-box-shadow: 0px 0px 12px #fff;
box-shadow: 0px 0px 12px #fff;
border: 1px solid #fff;
}
.results {
background: #fff;
border: 1px solid #ccc;
margin: 2em;
padding: 1em 2em 2em 2em;
-moz-border-radius: 9px;
-webkit-border-radius: 9px;
border-radius: 9px;
-moz-box-shadow: 0px 0px 12px #ccc;
-webkit-box-shadow: 0px 0px 12px #ccc;
box-shadow: 0px 0px 12px #ccc;
}
.results:before,
.results:after {
content:"";
display:table;
}
.results:after {
clear:both;
}
table#data {
border: 1px solid #bbb;
float: none;
width: 100%;
-moz-border-radius: 6px;
-webkit-border-radius: 6px;
border-radius: 6px;
}
thead th {
background: #138bbf; /* Old browsers */
background: -moz-linear-gradient(top, #138bbf 0%, #72c1e5 50%, #2982a5 51%, #138bbf 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#138bbf), color-stop(50%,#72c1e5), color-stop(51%,#2982a5), color-stop(100%,#138bbf)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #138bbf 0%,#72c1e5 50%,#2982a5 51%,#138bbf 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #138bbf 0%,#72c1e5 50%,#2982a5 51%,#138bbf 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #138bbf 0%,#72c1e5 50%,#2982a5 51%,#138bbf 100%); /* IE10+ */
background: linear-gradient(to bottom, #138bbf 0%,#72c1e5 50%,#2982a5 51%,#138bbf 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#138bbf', endColorstr='#138bbf',GradientType=0 ); /* IE6-9 */
color: #fff;
}
table tbody tr:nth-child(odd) {
background: #eef4f6;
color: #4095bf;
}
table tbody tr:nth-child(even) {
background: #fff;
color: #4095bf;
}
table tbody tr th {
background: transparent
}
table tbody tr:hover {
background: orange;
color: #fff;
}
table tbody tr:hover .cleanliness-value-1 {
background-color: #00aa00;
background-color: #88cc00;
color: #fff;
}
table tbody tr:hover .cleanliness-value-2 {
background-color: #aaff22;
background-color: #dfff80;
color: #4095bf;
}
table tbody tr:hover .cleanliness-value-3 {
background-color: #ffff22;
background-color: #fff266;
color: #4095bf;
}
table tbody tr:hover .cleanliness-value-4 {
background-color: #ff1111;
background-color: #ff8c66;
color: #fff;
}
#summary-graph .grapher {
margin: 0 auto;
text-align: center;
}
/***** print mode *****/
body.output-mode-print,
.output-mode-print #content,
.output-mode-print .results
{
background: #fff;
border: 0;
margin: 0 auto;
padding: 0;
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
}
.output-mode-print .results {
margin: 2em;
}