@@ -21,6 +21,7 @@ import java.net.URLEncoder
2121import java .util .Date
2222import javax .servlet .http .HttpServletRequest
2323
24+ import scala .collection .JavaConverters ._
2425import scala .collection .mutable .{HashMap , ListBuffer }
2526import scala .xml ._
2627
@@ -217,6 +218,9 @@ private[ui] class AllJobsPage(parent: JobsTab) extends WebUIPage("") {
217218 request : HttpServletRequest ,
218219 jobTag : String ,
219220 jobs : Seq [JobUIData ]): Seq [Node ] = {
221+ val allParameters = request.getParameterMap.asScala.toMap
222+ val parameterOtherTable = allParameters.filterNot(_._1.startsWith(jobTag))
223+ .map(para => para._1 + " =" + para._2(0 ))
220224
221225 val someJobHasJobGroup = jobs.exists(_.jobGroup.isDefined)
222226 val jobIdTitle = if (someJobHasJobGroup) " Job Id (Job Group)" else " Job Id"
@@ -254,6 +258,8 @@ private[ui] class AllJobsPage(parent: JobsTab) extends WebUIPage("") {
254258 jobs,
255259 jobTag,
256260 UIUtils .prependBaseUri(parent.basePath),
261+ " jobs" , // subPath
262+ parameterOtherTable,
257263 parent.jobProgresslistener.stageIdToInfo,
258264 parent.jobProgresslistener.stageIdToData,
259265 currentTime,
@@ -482,6 +488,8 @@ private[ui] class JobPagedTable(
482488 data : Seq [JobUIData ],
483489 jobTag : String ,
484490 basePath : String ,
491+ subPath : String ,
492+ parameterOtherTable : Iterable [String ],
485493 stageIdToInfo : HashMap [Int , StageInfo ],
486494 stageIdToData : HashMap [(Int , Int ), StageUIData ],
487495 currentTime : Long ,
@@ -490,6 +498,8 @@ private[ui] class JobPagedTable(
490498 sortColumn : String ,
491499 desc : Boolean
492500 ) extends PagedTable [JobTableRowData ] {
501+ val parameterPath = UIUtils .prependBaseUri(basePath) + s " / $subPath/? " +
502+ parameterOtherTable.mkString(" &" )
493503
494504 override def tableId : String = jobTag + " -table"
495505
@@ -514,19 +524,20 @@ private[ui] class JobPagedTable(
514524
515525 override def pageLink (page : Int ): String = {
516526 val encodedSortColumn = URLEncoder .encode(sortColumn, " UTF-8" )
517- basePath +
518- s " ? $pageNumberFormField= $page" +
527+ parameterPath +
528+ s " & $pageNumberFormField= $page" +
519529 s " & $jobTag.sort= $encodedSortColumn" +
520530 s " & $jobTag.desc= $desc" +
521531 s " & $pageSizeFormField= $pageSize"
522532 }
523533
524534 override def goButtonFormPath : String = {
525535 val encodedSortColumn = URLEncoder .encode(sortColumn, " UTF-8" )
526- s " $basePath ? $jobTag.sort= $encodedSortColumn& $jobTag.desc= $desc"
536+ s " $parameterPath & $jobTag.sort= $encodedSortColumn& $jobTag.desc= $desc"
527537 }
528538
529539 override def headers : Seq [Node ] = {
540+ // Information for each header: title, cssClass, and sortable
530541 val jobHeadersAndCssClasses : Seq [(String , String , Boolean )] =
531542 Seq (
532543 (jobIdTitle, " " , true ),
@@ -543,8 +554,8 @@ private[ui] class JobPagedTable(
543554 jobHeadersAndCssClasses.map { case (header, cssClass, sortable) =>
544555 if (header == sortColumn) {
545556 val headerLink = Unparsed (
546- basePath +
547- s " ? $jobTag.sort= ${URLEncoder .encode(header, " UTF-8" )}" +
557+ parameterPath +
558+ s " & $jobTag.sort= ${URLEncoder .encode(header, " UTF-8" )}" +
548559 s " & $jobTag.desc= ${! desc}" +
549560 s " & $jobTag.pageSize= $pageSize" )
550561 val arrow = if (desc) " ▾" else " ▴" // UP or DOWN
@@ -559,8 +570,8 @@ private[ui] class JobPagedTable(
559570 } else {
560571 if (sortable) {
561572 val headerLink = Unparsed (
562- basePath +
563- s " ? $jobTag.sort= ${URLEncoder .encode(header, " UTF-8" )}" +
573+ parameterPath +
574+ s " & $jobTag.sort= ${URLEncoder .encode(header, " UTF-8" )}" +
564575 s " & $jobTag.pageSize= $pageSize" )
565576
566577 <th class ={cssClass}>
0 commit comments