diff --git a/core/src/main/scala/org/apache/spark/ui/PagedTable.scala b/core/src/main/scala/org/apache/spark/ui/PagedTable.scala index 06b64c1d1250..008dcc6200d3 100644 --- a/core/src/main/scala/org/apache/spark/ui/PagedTable.scala +++ b/core/src/main/scala/org/apache/spark/ui/PagedTable.scala @@ -115,17 +115,18 @@ private[spark] trait PagedTable[T] { _dataSource.pageSize } - val pageNavi = pageNavigation(pageToShow, pageSize, totalPages) + val pageNaviTop = pageNavigation(pageToShow, pageSize, totalPages, tableId + "-top") + val pageNaviBottom = pageNavigation(pageToShow, pageSize, totalPages, tableId + "-bottom")
- {pageNavi} + {pageNaviTop} {headers} {data.map(row)}
- {pageNavi} + {pageNaviBottom}
} catch { case e: IndexOutOfBoundsException => @@ -171,7 +172,11 @@ private[spark] trait PagedTable[T] { * > means jumping to the next page. * }}} */ - private[ui] def pageNavigation(page: Int, pageSize: Int, totalPages: Int): Seq[Node] = { + private[ui] def pageNavigation( + page: Int, + pageSize: Int, + totalPages: Int, + navigationId: String = tableId): Seq[Node] = { // A group includes all page numbers will be shown in the page navigation. // The size of group is 10 means there are 10 page numbers will be shown. // The first group is 1 to 10, the second is 2 to 20, and so on @@ -214,7 +219,7 @@ private[spark] trait PagedTable[T] {
-
{totalPages} Pages. Jump to diff --git a/core/src/test/scala/org/apache/spark/ui/PagedTableSuite.scala b/core/src/test/scala/org/apache/spark/ui/PagedTableSuite.scala index d18f55474bdb..412543690700 100644 --- a/core/src/test/scala/org/apache/spark/ui/PagedTableSuite.scala +++ b/core/src/test/scala/org/apache/spark/ui/PagedTableSuite.scala @@ -85,6 +85,35 @@ class PagedTableSuite extends SparkFunSuite { assert((pagedTable.pageNavigation(93, 10, 97).head \\ "li").map(_.text.trim) === Seq("<<", "<") ++ (91 to 97).map(_.toString) ++ Seq(">")) } + + test("pageNavigation with different id") { + val pagedTable = new PagedTable[Int] { + override def tableId: String = "testTable" + + override def tableCssClass: String = "" + + override def dataSource: PagedDataSource[Int] = null + + override def pageLink(page: Int): String = "" + + override def headers: Seq[Node] = Nil + + override def row(t: Int): Seq[Node] = Nil + + override def pageSizeFormField: String = "" + + override def pageNumberFormField: String = "" + + override def goButtonFormPath: String = "" + } + + val defaultIdNavigation = pagedTable.pageNavigation(1, 10, 2).head \\ "form" + assert(defaultIdNavigation \@ "id" === "form-testTable-page") + + val customIdNavigation = pagedTable.pageNavigation(1, 10, 2, "customIdTable").head \\ "form" + assert(customIdNavigation \@ "id" === "form-customIdTable-page") + assert(defaultIdNavigation !== customIdNavigation) + } } private[spark] class SeqPagedDataSource[T](seq: Seq[T], pageSize: Int)