@@ -92,6 +92,14 @@ private[ui] class StagePage(parent: StagesTab, store: AppStatusStore) extends We
9292 val parameterTaskSortDesc = UIUtils .stripXSS(request.getParameter(" task.desc" ))
9393 val parameterTaskPageSize = UIUtils .stripXSS(request.getParameter(" task.pageSize" ))
9494
95+ val eventTimelineParameterTaskPage = UIUtils .stripXSS(
96+ request.getParameter(" task.eventTimelinePageNumber" ))
97+ val eventTimelineParameterTaskPageSize = UIUtils .stripXSS(
98+ request.getParameter(" task.eventTimelinePageSize" ))
99+ var eventTimelineTaskPage = Option (eventTimelineParameterTaskPage).map(_.toInt).getOrElse(1 )
100+ var eventTimelineTaskPageSize = Option (
101+ eventTimelineParameterTaskPageSize).map(_.toInt).getOrElse(100 )
102+
95103 val taskPage = Option (parameterTaskPage).map(_.toInt).getOrElse(1 )
96104 val taskSortColumn = Option (parameterTaskSortColumn).map { sortColumn =>
97105 UIUtils .decodeURLParameter(sortColumn)
@@ -132,6 +140,14 @@ private[ui] class StagePage(parent: StagesTab, store: AppStatusStore) extends We
132140 } else {
133141 s " $totalTasks, showing $storedTasks"
134142 }
143+ if (eventTimelineTaskPageSize < 1 || eventTimelineTaskPageSize > totalTasks) {
144+ eventTimelineTaskPageSize = totalTasks
145+ }
146+ val eventTimelineTotalPages =
147+ (totalTasks + eventTimelineTaskPageSize - 1 ) / eventTimelineTaskPageSize
148+ if (eventTimelineTaskPage < 1 || eventTimelineTaskPage > eventTimelineTotalPages) {
149+ eventTimelineTaskPage = 1
150+ }
135151
136152 val summary =
137153 <div >
@@ -247,9 +263,12 @@ private[ui] class StagePage(parent: StagesTab, store: AppStatusStore) extends We
247263 makeTimeline(
248264 // Only show the tasks in the table
249265 Option (taskTable).map({ taskPagedTable =>
250- val from = (taskPage - 1 ) * taskPageSize
251- val to = taskPagedTable.dataSource.dataSize.min(taskPage * taskPageSize)
252- taskPagedTable.dataSource.sliceData(from, to)}).getOrElse(Nil ), currentTime) ++
266+ val from = (eventTimelineTaskPage - 1 ) * eventTimelineTaskPageSize
267+ val to = taskPagedTable.dataSource.dataSize.min(
268+ eventTimelineTaskPage * eventTimelineTaskPageSize)
269+ taskPagedTable.dataSource.sliceData(from, to)}).getOrElse(Nil ), currentTime,
270+ eventTimelineTaskPage, eventTimelineTaskPageSize, eventTimelineTotalPages, stageId,
271+ stageAttemptId, totalTasks) ++
253272 <div id =" parent-container" >
254273 <script src ={UIUtils .prependBaseUri(request, " /static/utils.js" )}></script >
255274 <script src ={UIUtils .prependBaseUri(request, " /static/stagepage.js" )}></script >
@@ -259,7 +278,8 @@ private[ui] class StagePage(parent: StagesTab, store: AppStatusStore) extends We
259278
260279 }
261280
262- def makeTimeline (tasks : Seq [TaskData ], currentTime : Long ): Seq [Node ] = {
281+ def makeTimeline (tasks : Seq [TaskData ], currentTime : Long , page : Int , pageSize : Int ,
282+ totalPages : Int , stageId : Int , stageAttemptId : Int , totalTasks : Int ): Seq [Node ] = {
263283 val executorsSet = new HashSet [(String , String )]
264284 var minLaunchTime = Long .MaxValue
265285 var maxFinishTime = Long .MinValue
@@ -418,6 +438,31 @@ private[ui] class StagePage(parent: StagesTab, store: AppStatusStore) extends We
418438 <input type =" checkbox" ></input >
419439 <span >Enable zooming</span >
420440 </div >
441+ <div >
442+ < form id= {s " form-event-timeline-page " }
443+ method= " get"
444+ action= " "
445+ class = " form-inline pull-right"
446+ style= " margin-bottom: 0px;" >
447+ <label >Tasks : {totalTasks}. {totalPages} Pages . Jump to</label >
448+ <input type =" hidden" name =" id" value ={stageId.toString} />
449+ <input type =" hidden" name =" attempt" value ={stageAttemptId.toString} />
450+ < input type = " text"
451+ name= " task.eventTimelinePageNumber"
452+ id= {s " form-event-timeline-page-no " }
453+ value= {page.toString} class = " span1" />
454+
455+ <label >. Show </label >
456+ < input type = " text"
457+ id= {s " form-event-timeline-page-size " }
458+ name= " task.eventTimelinePageSize"
459+ value= {pageSize.toString}
460+ class = " span1" />
461+ <label >items in a page.</label >
462+
463+ <button type =" submit" class =" btn" >Go </button >
464+ </form >
465+ </div >
421466 </div >
422467 {TIMELINE_LEGEND }
423468 </div > ++
0 commit comments