Some cleanup of styling

This commit is contained in:
Patrick Wendell 2013-06-22 10:17:29 -07:00
parent 3b7ebdeeb8
commit 7e9f1ed0de
2 changed files with 35 additions and 14 deletions

View file

@ -41,11 +41,25 @@ private[spark] object JettyUtils extends Logging {
response.setStatus(HttpServletResponse.SC_OK)
baseRequest.setHandled(true)
val result = responder(request)
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate")
response.getWriter().println(extractFn(result))
}
}
}
def createRedirectHandler(newPath: String): Handler = {
new AbstractHandler {
def handle(target: String,
baseRequest: Request,
request: HttpServletRequest,
response: HttpServletResponse) {
response.setStatus(302)
response.setHeader("Location", baseRequest.getRootURL + newPath)
baseRequest.setHandled(true)
}
}
}
/** Creates a handler for serving files from a static directory. */
def createStaticHandler(resourceBase: String): ResourceHandler = {
val staticHandler = new ResourceHandler
@ -66,13 +80,9 @@ private[spark] object JettyUtils extends Logging {
*/
def startJettyServer(ip: String, port: Int, handlers: Seq[(String, Handler)]): (Server, Int) = {
val handlersToRegister = handlers.map { case(path, handler) =>
if (path == "*") {
handler
} else {
val contextHandler = new ContextHandler(path)
contextHandler.setHandler(handler)
contextHandler.asInstanceOf[org.eclipse.jetty.server.Handler]
}
val contextHandler = new ContextHandler(path)
contextHandler.setHandler(handler)
contextHandler.asInstanceOf[org.eclipse.jetty.server.Handler]
}
val handlerList = new HandlerList
@ -99,13 +109,21 @@ object UIUtils {
/** Returns a page containing the supplied content and the spark web ui headers */
def headerSparkPage(content: => Seq[Node], sc: SparkContext, title: String): Seq[Node] = {
val newContent =
<div class="row">
<div class="span12">
<div class="row" style="padding-top: 5px;">
<div class="span2">
<div style="padding-left: 10px">
<ul class="unstyled">
<li><a href="/storage">Storage</a></li>
<li><a href="/jobs">Jobs</a></li>
</ul>
</div>
</div>
<div class="span10">
<ul class="unstyled">
<li><strong>Master:</strong> {sc.master}</li>
<li><strong>Application:</strong> {sc.appName}</li>
<li><strong>Executors:</strong> {sc.getExecutorStorageStatus.size} </li>
</ul>
<h3><a href="/storage">Storage</a> | <a href="/stages">Jobs</a> </h3>
</div>
</div>
<hr/>;
@ -128,10 +146,11 @@ object UIUtils {
<body>
<div class="container">
<div class="row">
<div class="span12">
<div class="span2">
<img src="/static/spark_logo.png" />
<h1 style="vertical-align: bottom; margin-bottom: 10px;
margin-left: 30px; display: inline-block;">
</div>
<div class="span10">
<h1 style="vertical-align: bottom; margin-top: 40px; display: inline-block;">
{title}
</h1>
</div>

View file

@ -12,13 +12,15 @@ import spark.ui.JettyUtils._
/** Top level user interface for Spark */
private[spark] class SparkUI(sc: SparkContext) extends Logging {
// TODO(pwendell): It would be nice to add a view that prints out environment information
val host = Utils.localHostName()
val port = Option(System.getProperty("spark.ui.port")).getOrElse(SparkUI.DEFAULT_PORT).toInt
var boundPort: Option[Int] = None
val handlers = Seq[(String, Handler)](
("/static", createStaticHandler(SparkUI.STATIC_RESOURCE_DIR)),
("*", (request: HttpServletRequest) => headerSparkPage(<h1>Test</h1>, sc, "Test page"))
("/", createRedirectHandler("/stages"))
)
val storage = new BlockManagerUI(sc)
val jobs = new JobProgressUI(sc)