diff --git a/core/src/main/scala/org/apache/spark/ui/UIUtils.scala b/core/src/main/scala/org/apache/spark/ui/UIUtils.scala index f663b1ea19c0f..eedec979f7158 100644 --- a/core/src/main/scala/org/apache/spark/ui/UIUtils.scala +++ b/core/src/main/scala/org/apache/spark/ui/UIUtils.scala @@ -218,24 +218,27 @@ private[spark] object UIUtils extends Logging { - - - - } + def timelineHeaderNodes(request: HttpServletRequest): Seq[Node] = { + + + + + } + def vizHeaderNodes(request: HttpServletRequest): Seq[Node] = { @@ -266,7 +269,8 @@ private[spark] object UIUtils extends Logging { activeTab: SparkUITab, helpText: Option[String] = None, showVisualization: Boolean = false, - useDataTables: Boolean = false): Seq[Node] = { + useDataTables: Boolean = false, + useTimeline: Boolean = false): Seq[Node] = { val appName = activeTab.appName val shortAppName = if (appName.length < 36) appName else appName.take(32) + "..." @@ -288,6 +292,7 @@ private[spark] object UIUtils extends Logging { {if (showVisualization) vizHeaderNodes(request) else Seq.empty} {if (useDataTables) dataTablesHeaderNodes(request) else Seq.empty} + {if (useTimeline) timelineHeaderNodes(request) else Seq.empty} {appName} - {title} @@ -352,7 +357,8 @@ private[spark] object UIUtils extends Logging { request: HttpServletRequest, content: => Seq[Node], title: String, - useDataTables: Boolean = false): Seq[Node] = { + useDataTables: Boolean = false, + useTimeline: Boolean = false): Seq[Node] = { {commonHeaderNodes(request)} @@ -361,6 +367,7 @@ private[spark] object UIUtils extends Logging { "localStorage.getItem('spark-theme')||" + "(matchMedia('(prefers-color-scheme:dark)').matches?'dark':'light'))")} {if (useDataTables) dataTablesHeaderNodes(request) else Seq.empty} + {if (useTimeline) timelineHeaderNodes(request) else Seq.empty} {title} diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/AllJobsPage.scala b/core/src/main/scala/org/apache/spark/ui/jobs/AllJobsPage.scala index 6898cbbd82880..75115ed4366ea 100644 --- a/core/src/main/scala/org/apache/spark/ui/jobs/AllJobsPage.scala +++ b/core/src/main/scala/org/apache/spark/ui/jobs/AllJobsPage.scala @@ -406,7 +406,7 @@ private[ui] class AllJobsPage(parent: JobsTab, store: AppStatusStore) extends We " Click on a job to see information about the stages of tasks inside it." UIUtils.headerSparkPage(request, "Spark Jobs", content, parent, - helpText = Some(helpText)) + helpText = Some(helpText), useTimeline = true) } } diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/JobPage.scala b/core/src/main/scala/org/apache/spark/ui/jobs/JobPage.scala index 30e0f678de782..a5c8aaab9ec0c 100644 --- a/core/src/main/scala/org/apache/spark/ui/jobs/JobPage.scala +++ b/core/src/main/scala/org/apache/spark/ui/jobs/JobPage.scala @@ -530,6 +530,7 @@ private[ui] class JobPage(parent: JobsTab, store: AppStatusStore) extends WebUIP } UIUtils.headerSparkPage( - request, s"Details for Job $jobId", content, parent, showVisualization = true) + request, s"Details for Job $jobId", content, parent, showVisualization = true, + useTimeline = true) } } diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala b/core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala index 264a57efff0c6..391345f74dff9 100644 --- a/core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala +++ b/core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala @@ -243,7 +243,7 @@ private[ui] class StagePage(parent: StagesTab, store: AppStatusStore) extends We UIUtils.headerSparkPage(request, stageHeader, content, parent, showVisualization = true, - useDataTables = true) + useDataTables = true, useTimeline = true) } diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/ui/ExecutionPage.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/ui/ExecutionPage.scala index b9f0b91dfde4b..3c8f0c1bec9d1 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/execution/ui/ExecutionPage.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/ui/ExecutionPage.scala @@ -128,7 +128,7 @@ class ExecutionPage(parent: SQLTab) extends WebUIPage("execution") with Logging } UIUtils.headerSparkPage( - request, s"Details for Query $executionId", content, parent) + request, s"Details for Query $executionId", content, parent, useTimeline = true) }