Instead of having a single StageTable and then mutating its pool information and set of stages, I'd prefer you pass a sequence of stages and pool information as part of the constructor. Then you can create a new StageTable each time you need to plot a list of stages. This would be much cleaner. Also, remove dateFmt and formatDuration and just put them in the class... we'll want those to be the same every time we render a table.

`private[spark] class StageTable(val stages: Seq[Stage], val listener, JobProgressListener, val poolInfo: StagePoolInfo)`