From 0724a4587c40388d2e16e343dd06f500bb39cb3f Mon Sep 17 00:00:00 2001
From: Peter van 't Hof
Date: Fri, 7 Apr 2017 13:30:47 +0200
Subject: [PATCH] WIP
---
.../biopet/core/report/ReportBuilder.scala | 31 ++++++++++---------
1 file changed, 16 insertions(+), 15 deletions(-)
diff --git a/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/report/ReportBuilder.scala b/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/report/ReportBuilder.scala
index febd18c50..2d5c222a8 100644
--- a/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/report/ReportBuilder.scala
+++ b/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/report/ReportBuilder.scala
@@ -210,12 +210,10 @@ trait ReportBuilder extends ToolCommand {
done = 0
logger.info("Generate pages")
- val jobs = generatePage(summary, rootPage, cmdArgs.outputDir,
+ val jobsFutures = generatePage(summary, rootPage, cmdArgs.outputDir,
args = pageArgs ++ cmdArgs.pageArgs.toMap ++
Map("summary" -> summary, "reportName" -> reportName, "indexPage" -> rootPage, "runId" -> cmdArgs.runId))
- val jobsFutures = Await.result(jobs, Duration.Inf)
-
total = jobsFutures.size
logger.info(total + " pages to be generated")
@@ -259,12 +257,12 @@ trait ReportBuilder extends ToolCommand {
pageFuture: Future[ReportPage],
outputDir: File,
path: List[String] = Nil,
- args: Map[String, Any] = Map()): Future[List[Future[_]]] = {
- pageFuture.map { page =>
- val pageOutputDir = new File(outputDir, path.mkString(File.separator))
- pageOutputDir.mkdirs()
+ args: Map[String, Any] = Map()): List[Future[_]] = {
+ val pageOutputDir = new File(outputDir, path.mkString(File.separator))
+
+ def pageArgs(page: ReportPage) = {
val rootPath = "./" + Array.fill(path.size)("../").mkString
- val pageArgs = args ++ page.args ++
+ args ++ page.args ++
Map("page" -> page,
"path" -> path,
"outputDir" -> pageOutputDir,
@@ -274,29 +272,32 @@ trait ReportBuilder extends ToolCommand {
"allSamples" -> samples,
"allLibraries" -> libraries
)
+ }
+ val subPageJobs = pageFuture.map { page =>
// Generating subpages
- val jobs = page.subPages.flatMap {
- case (name, subPage) => generatePage(summary, subPage, outputDir, path ::: name :: Nil, pageArgs)
+ page.subPages.flatMap {
+ case (name, subPage) => generatePage(summary, subPage, outputDir, path ::: name :: Nil, pageArgs(page))
}
+ }
+
+ val renderFuture = pageFuture.map { page =>
+ pageOutputDir.mkdirs()
- val renderFuture = Future {
val file = new File(pageOutputDir, "index.html")
logger.info(s"Start rendering: $file")
val output = ReportBuilder.renderTemplate("/nl/lumc/sasc/biopet/core/report/main.ssp",
- pageArgs ++ Map("args" -> pageArgs))
+ pageArgs(page) ++ Map("args" -> pageArgs(page)))
val writer = new PrintWriter(file)
writer.println(output)
writer.close()
logger.info(s"Done rendering: $file")
- }
-
- renderFuture :: jobs
}
+ renderFuture :: Await.result(subPageJobs, Duration.Inf)
}
def pipelineName: String
--
GitLab