From ca1903ea63e71706456c9bc19b22393c9d02c896 Mon Sep 17 00:00:00 2001 From: Karen Feng <karenfeng.us@gmail.com> Date: Tue, 6 Aug 2013 15:45:42 -0700 Subject: [PATCH] Overlays progress text on top of bar --- .../main/scala/spark/ui/jobs/StageTable.scala | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/core/src/main/scala/spark/ui/jobs/StageTable.scala b/core/src/main/scala/spark/ui/jobs/StageTable.scala index b1b8743a97..40514b9f40 100644 --- a/core/src/main/scala/spark/ui/jobs/StageTable.scala +++ b/core/src/main/scala/spark/ui/jobs/StageTable.scala @@ -37,7 +37,7 @@ private[spark] class StageTable(val stages: Seq[Stage], val parent: JobProgressU <th>Origin</th> <th>Submitted</th> <td>Duration</td> - <td colspan="2">Tasks: Succeeded/Total</td> + <td>Tasks: Succeeded/Total</td> <td>Shuffle Read</td> <td>Shuffle Write</td> </thead> @@ -54,11 +54,14 @@ private[spark] class StageTable(val stages: Seq[Stage], val parent: JobProgressU } } - def makeProgressBar(started: Int, completed: Int, total: Int): Seq[Node] = { + def makeProgressBar(started: Int, completed: Int, failed: String, total: Int): Seq[Node] = { val completeWidth = "width: %s%%".format((completed.toDouble/total)*100) val startWidth = "width: %s%%".format((started.toDouble/total)*100) - <div class="progress" style="height: 15px; margin-bottom: 0px"> + <div class="progress" style="height: 15px; margin-bottom: 0px; position: relative"> + <span style="text-align:center; position:absolute; width:100%;"> + {completed}/{total} {failed} + </span> <div class="bar" style={completeWidth}></div> <div class="bar bar-info" style={startWidth}></div> </div> @@ -82,6 +85,10 @@ private[spark] class StageTable(val stages: Seq[Stage], val parent: JobProgressU val startedTasks = listener.stageToTasksActive.getOrElse(s.id, HashSet[TaskInfo]()).size val completedTasks = listener.stageToTasksComplete.getOrElse(s.id, 0) + val failedTasks = listener.stageToTasksFailed.getOrElse(s.id, 0) match { + case f if f > 0 => "(%s failed)".format(f) + case _ => "" + } val totalTasks = s.numPartitions val poolName = listener.stageToPool.get(s) @@ -95,12 +102,8 @@ private[spark] class StageTable(val stages: Seq[Stage], val parent: JobProgressU <td>{submissionTime}</td> <td>{getElapsedTime(s.submissionTime, s.completionTime.getOrElse(System.currentTimeMillis()))}</td> - <td class="progress-cell">{makeProgressBar(startedTasks, completedTasks, totalTasks)}</td> - <td style="border-left: 0; text-align: center;">{completedTasks} / {totalTasks} - {listener.stageToTasksFailed.getOrElse(s.id, 0) match { - case f if f > 0 => "(%s failed)".format(f) - case _ => - }} + <td class="progress-cell"> + {makeProgressBar(startedTasks, completedTasks, failedTasks, totalTasks)} </td> <td>{shuffleRead}</td> <td>{shuffleWrite}</td> -- GitLab