Skip to content

Commit 7bca29d

Browse files
committed
Made HTML elements for page navigation possible to have custom id.
1 parent 2c5d489 commit 7bca29d

File tree

2 files changed

+41
-7
lines changed

2 files changed

+41
-7
lines changed

core/src/main/scala/org/apache/spark/ui/PagedTable.scala

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -115,17 +115,18 @@ private[spark] trait PagedTable[T] {
115115
_dataSource.pageSize
116116
}
117117

118-
val pageNavi = pageNavigation(pageToShow, pageSize, totalPages)
118+
val pageNaviTop = pageNavigation(pageToShow, pageSize, totalPages, tableId + "-top")
119+
val pageNaviBottom = pageNavigation(pageToShow, pageSize, totalPages, tableId + "-bottom")
119120

120121
<div>
121-
{pageNavi}
122+
{pageNaviTop}
122123
<table class={tableCssClass} id={tableId}>
123124
{headers}
124125
<tbody>
125126
{data.map(row)}
126127
</tbody>
127128
</table>
128-
{pageNavi}
129+
{pageNaviBottom}
129130
</div>
130131
} catch {
131132
case e: IndexOutOfBoundsException =>
@@ -171,7 +172,11 @@ private[spark] trait PagedTable[T] {
171172
* > means jumping to the next page.
172173
* }}}
173174
*/
174-
private[ui] def pageNavigation(page: Int, pageSize: Int, totalPages: Int): Seq[Node] = {
175+
private[ui] def pageNavigation(
176+
page: Int,
177+
pageSize: Int,
178+
totalPages: Int,
179+
navigationId: String = tableId): Seq[Node] = {
175180
// A group includes all page numbers will be shown in the page navigation.
176181
// The size of group is 10 means there are 10 page numbers will be shown.
177182
// 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] {
214219

215220
<div>
216221
<div>
217-
<form id={s"form-$tableId-page"}
222+
<form id={s"form-$navigationId-page"}
218223
method="get"
219224
action={Unparsed(goButtonFormPath)}
220225
class="form-inline float-right justify-content-end"
@@ -223,13 +228,13 @@ private[spark] trait PagedTable[T] {
223228
<label>{totalPages} Pages. Jump to</label>
224229
<input type="text"
225230
name={pageNumberFormField}
226-
id={s"form-$tableId-page-no"}
231+
id={s"form-$navigationId-page-no"}
227232
value={page.toString}
228233
class="col-1 form-control" />
229234

230235
<label>. Show </label>
231236
<input type="text"
232-
id={s"form-$tableId-page-size"}
237+
id={s"form-$navigationId-page-size"}
233238
name={pageSizeFormField}
234239
value={pageSize.toString}
235240
class="col-1 form-control" />

core/src/test/scala/org/apache/spark/ui/PagedTableSuite.scala

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,35 @@ class PagedTableSuite extends SparkFunSuite {
8585
assert((pagedTable.pageNavigation(93, 10, 97).head \\ "li").map(_.text.trim) ===
8686
Seq("<<", "<") ++ (91 to 97).map(_.toString) ++ Seq(">"))
8787
}
88+
89+
test("pageNavigation with different id") {
90+
val pagedTable = new PagedTable[Int] {
91+
override def tableId: String = "testTable"
92+
93+
override def tableCssClass: String = ""
94+
95+
override def dataSource: PagedDataSource[Int] = null
96+
97+
override def pageLink(page: Int): String = ""
98+
99+
override def headers: Seq[Node] = Nil
100+
101+
override def row(t: Int): Seq[Node] = Nil
102+
103+
override def pageSizeFormField: String = ""
104+
105+
override def pageNumberFormField: String = ""
106+
107+
override def goButtonFormPath: String = ""
108+
}
109+
110+
val defaultIdNavigation = pagedTable.pageNavigation(1, 10, 2).head \\ "form"
111+
assert(defaultIdNavigation \@ "id" === "form-testTable-page")
112+
113+
val customIdNavigation = pagedTable.pageNavigation(1, 10, 2, "customIdTable").head \\ "form"
114+
assert(customIdNavigation \@ "id" === "form-customIdTable-page")
115+
assert(defaultIdNavigation !== customIdNavigation)
116+
}
88117
}
89118

90119
private[spark] class SeqPagedDataSource[T](seq: Seq[T], pageSize: Int)

0 commit comments

Comments
 (0)