mirror of
https://github.com/ysoftdevs/odc-analyzer.git
synced 2026-03-29 05:22:05 +02:00
Added list of all project, including those not included by the filter
This commit is contained in:
@@ -238,4 +238,8 @@ h3.library-identification{
|
|||||||
padding-left: 1em;
|
padding-left: 1em;
|
||||||
font-family: 'Glyphicons Halflings';
|
font-family: 'Glyphicons Halflings';
|
||||||
content: "\e209";
|
content: "\e209";
|
||||||
|
}
|
||||||
|
|
||||||
|
.sublist{
|
||||||
|
padding-left: 23px;
|
||||||
}
|
}
|
||||||
@@ -312,6 +312,16 @@ class Statistics @Inject()(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def affectedProjects(depId: Hashes) = ReadAction.async { implicit req =>
|
||||||
|
val (lastRefreshTime, resultsFuture) = projectReportsProvider.resultsForVersions(versions)
|
||||||
|
resultsFuture flatMap { case (successfulResults, failedResults) =>
|
||||||
|
val selection = dependencyCheckReportsParser.parseReports(successfulResults, failedResults)
|
||||||
|
Future.successful(Ok(views.html.affectedProjects(
|
||||||
|
dep = selection.groupedDependenciesByHashes(depId)
|
||||||
|
)).withHeaders("Content-type" -> "text/plain; charset=utf-8"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
def allFiles(selectorOption: Option[String]) = ReadAction.async { implicit req =>
|
def allFiles(selectorOption: Option[String]) = ReadAction.async { implicit req =>
|
||||||
val (lastRefreshTime, resultsFuture) = projectReportsProvider.resultsForVersions(versions)
|
val (lastRefreshTime, resultsFuture) = projectReportsProvider.resultsForVersions(versions)
|
||||||
resultsFuture flatMap { allResults =>
|
resultsFuture flatMap { allResults =>
|
||||||
|
|||||||
6
app/views/affectedProjects.scala.html
Normal file
6
app/views/affectedProjects.scala.html
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
@(dep: GroupedDependency)
|
||||||
|
<ul>
|
||||||
|
@for(p <- dep.projects.toIndexedSeq.sorted){
|
||||||
|
<li>@friendlyProjectName(p)</li>
|
||||||
|
}
|
||||||
|
</ul>
|
||||||
@@ -63,7 +63,19 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<h4 class="expandable" data-toggle="collapse" data-target="#@depPrefix-projects-details">Affected projects (@dep.projects.size)</h4>
|
<h4 class="expandable" data-toggle="collapse" data-target="#@depPrefix-projects-details">Affected projects (@dep.projects.size)</h4>
|
||||||
<ul id="@depPrefix-projects-details" class="collapse in">@for(p <- dep.projects.toIndexedSeq.sorted){<li>@friendlyProjectName(p)</li>}</ul>
|
<div id="@depPrefix-projects-details" class="collapse in">
|
||||||
|
<ul>
|
||||||
|
@for(p <- dep.projects.toIndexedSeq.sorted){
|
||||||
|
<li>@friendlyProjectName(p)</li>
|
||||||
|
}
|
||||||
|
</ul>
|
||||||
|
@if(selectorOption.isDefined){
|
||||||
|
<h5 class="expandable collapsed sublist" data-toggle="collapse" data-target="#@depPrefix-projects-all-details">All affected projects (including those that aren't included by the filter)</h5>
|
||||||
|
<div id="@depPrefix-projects-all-details" class="collapse" data-lazyload-url="@routes.Statistics.affectedProjects(
|
||||||
|
depId = dep.hashes
|
||||||
|
)"></div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
<h4 class="expandable" data-toggle="collapse" data-target="#@depPrefix-vulnerabilities-details">Vulnerabilities (@dep.vulnerabilities.size)</h4>
|
<h4 class="expandable" data-toggle="collapse" data-target="#@depPrefix-vulnerabilities-details">Vulnerabilities (@dep.vulnerabilities.size)</h4>
|
||||||
<ul id="@depPrefix-vulnerabilities-details" class="collapse in vulnerabilities-details">
|
<ul id="@depPrefix-vulnerabilities-details" class="collapse in vulnerabilities-details">
|
||||||
@for(vuln <- dep.vulnerabilities.toSeq.sortBy(_.cvssScore.map(-_)); vulnPrefix = s"$depPrefix-vulnerabilities-details-${vuln.name}"){
|
@for(vuln <- dep.vulnerabilities.toSeq.sortBy(_.cvssScore.map(-_)); vulnPrefix = s"$depPrefix-vulnerabilities-details-${vuln.name}"){
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ GET /https-test/with-redirect controllers.Application.testHttps(
|
|||||||
GET /https-test controllers.Application.testHttps(allowRedirect: Boolean = false)
|
GET /https-test controllers.Application.testHttps(allowRedirect: Boolean = false)
|
||||||
|
|
||||||
GET /stats/dependency-details.htmlf controllers.Statistics.dependencyDetails(selectorOption: Option[String], depPrefix: String, depId: com.ysoft.odc.Hashes)
|
GET /stats/dependency-details.htmlf controllers.Statistics.dependencyDetails(selectorOption: Option[String], depPrefix: String, depId: com.ysoft.odc.Hashes)
|
||||||
|
GET /stats/affected-projects.htmlf controllers.Statistics.affectedProjects(depId: com.ysoft.odc.Hashes)
|
||||||
GET /stats/basic controllers.Statistics.basic(selector: Option[String] = None)
|
GET /stats/basic controllers.Statistics.basic(selector: Option[String] = None)
|
||||||
GET /stats/basic/*selector controllers.Statistics.basic(selector: Option[String])
|
GET /stats/basic/*selector controllers.Statistics.basic(selector: Option[String])
|
||||||
GET /stats/details controllers.Statistics.vulnerabilities(selector: Option[String], tagId: Option[Int])
|
GET /stats/details controllers.Statistics.vulnerabilities(selector: Option[String], tagId: Option[Int])
|
||||||
|
|||||||
Reference in New Issue
Block a user