Files
odc-analyzer/app/views/libraryIdentificationList.scala.html
2017-10-09 15:46:23 +02:00

33 lines
2.3 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@(dep: GroupedDependency, suppressionXmlIdOption: Option[String => String] = None, addLink: Boolean = true, addButtons: Boolean = true)
@import com.ysoft.odc.Confidence
@implicitOrdering = @{
// This implicit should not be theoretically needed, but missing this used to cause somehow non-deterministic scalac behavior:
// The first ….sortBy expression used to pass, while the second one used to fail sometimes. Even though both expressions are essentially the same.
// When these expressions are swapped, still the first (after swapping) one passes and the second one fails, no matter which one is the first and
// which is the second. So, it looks like some compiler bug related to mutable state.
// It also seems to be related to some compiler cache. It is somehow possible to compile it by incremental compilation and some code changes, but
// clean build deterministically fails at the second expression.
// So, making the implicit explicit is a workaround for this issue.
Ordering.Tuple5[Confidence.Value, Boolean, String, String, String]
}
@cleanIdentifiers(identifiers: Set[Identifier]) = @{
if(addLink) identifiers
else identifiers.map(_.copy(url = "")) // Quick workaround for multiplicities caused by different URL
}
<ul>
@if(!dep.identifiers.exists(_.confidence >= Confidence.High)){
<li><span class="identifier identifier-file" data-type="file" data-confidence="highest">@confidence(Confidence.Highest)@dep.fileNames.toSeq.sorted.mkString(", ")@if(addButtons){<span class="btn-xs library-identification-badge-hack">&nbsp;</span>}</span></li>
}
@for(id <- cleanIdentifiers(dep.identifiers).toSeq.sortBy(i => (i.confidence, i.identifierType == "cpe", i.identifierType, i.name, i.url)).reverse){
<li>
@identifier(id, addLink)
@for(cpe <- id.toCpeIdentifierOption; suppressionXmlId <- suppressionXmlIdOption; if addButtons){
<button class="btn btn-default btn-xs" data-toggle="collapse" data-target="#@suppressionXmlId(cpe)">×</button>
}
@if(addButtons && suppressionXmlIdOption.isDefined){<span class="btn-xs library-identification-badge-hack">&nbsp;</span>}
</li>
}
@for(id <- cleanIdentifiers(dep.suppressedIdentifiers).toSeq.sortBy(i => (i.confidence, i.identifierType == "cpe", i.identifierType, i.name, i.url)).reverse){
<li><del>@identifier(id, addLink)</del></li>
}
</ul>