report-builder/resources/htmlTemplates/classCoverage.ftl (88 lines of code) (raw):
<#-- @ftlvariable name="sortOption" type="jetbrains.coverage.report.impl.html.SortOption" -->
<#-- @ftlvariable name="module" type="jetbrains.coverage.report.impl.html.ModuleInfo" -->
<#-- @ftlvariable name="namespace" type="java.lang.String" -->
<#-- @ftlvariable name="classDataBean" type="jetbrains.coverage.report.impl.ClassDataBean" -->
<#include "macros.ftl">
<#assign ns><@namespaceName namespace = classDataBean.namespace/></#assign>
<#assign className="${classDataBean.name?html}">
<#if className?length = 0><#assign className="<empty ${resources['coverage.class']} name>"></#if>
<#macro classStat classDataBean>
<h2>${resources['coverage.class']?cap_first}: ${className}</h2>
<@overallStatTable labelName="${resources['coverage.class']?cap_first}" labelValue="${className}" coverageStatistics=statsCalculator.getForClass(classDataBean.classData)/>
</#macro>
<@page title="${className}">
<div class="breadCrumbs">
<@currentScope/>
<#if include_modules>
<a href="${paths.getModulesIndexPath(sortOption)}">all ${resources['coverage.module_plural']}</a>
<span class="separator">|</span>
<a href="${paths.getNamespacesIndexPath(module, sortOption)}"><@moduleName module=module/></a>
<span class="separator">|</span>
<#else>
<a href="${paths.getNamespacesIndexPath(module, sortOption)}">all ${resources['coverage.class_plural']}</a>
<span class="separator">|</span>
</#if>
<a href="${paths.getClassesIndexPath(module, namespace, sortOption)}">${ns}</a>
</div>
<h1>Coverage Summary for ${resources['coverage.class']?cap_first}: ${className} (${ns})</h1>
<table class="coverageStats">
<#if classDataBean.innerClasses?size == 0>
<tr>
<th class="name">${resources['coverage.class']?cap_first}</th>
<@coverageStatHeaderRow coverageStatistics=statsCalculator.getForClass(classDataBean.classData) />
</tr>
<tr>
<td class="name">${className}</td>
<@coverageStatRow coverageStatistics=statsCalculator.getForClass(classDataBean.classData)/>
</tr>
</#if>
<#if classDataBean.innerClasses?size > 0>
<tr>
<th class="name">${resources['coverage.class']?cap_first}</th>
<@coverageStatHeaderRow coverageStatistics=statsCalculator.getForClassWithInnerClasses(classDataBean.classData) showForClass=false/>
</tr>
<#assign classStat=statsCalculator.getForClass(classDataBean.classData)/>
<#if classStat.lineStats.total >= 0>
<tr>
<td class="name">${className}</td>
<@coverageStatRow coverageStatistics=classStat showForClass=false/>
</tr>
</#if>
<#list classDataBean.innerClasses as innerClass>
<tr>
<td class="name">${innerClass.name?html}</td>
<@coverageStatRow coverageStatistics=statsCalculator.getForClass(innerClass.classData) showForClass=false/>
</tr>
</#list>
<tr>
<td class="name"><strong>Total</strong></td>
<@coverageStatRow coverageStatistics=statsCalculator.getForClassWithInnerClasses(classDataBean.classData) showForClass=false/>
</tr>
</#if>
</table>
<br/>
<br/>
<#assign files = classDataBean.files/>
<#if files?size == 0>
<code class="sourceCode">Source code is not available<br /></code>
<#else>
<#list files as file>
<#assign lines = file.lines/>
<#if file.caption?has_content><h2>${file.caption}</h2></#if>
<pre>
<code class="sourceCode" id="sourceCode"><#list lines as lineBean
><#assign class=""
><#if lineBean.executable
><#switch lineBean.coverage
><#case "NONE"><#assign class="nc"><#break
><#case "FULL"><#assign class="fc"><#break
><#case "PARTIAL"><#assign class="pc"><#break
></#switch
></#if
><#if class?length > 0><b class="${class}"></#if> ${lineBean.sourceCode?xhtml}<#if class?length > 0></b></#if>
</#list>
</code>
</pre>
</#list>
</#if>
</@page>