diff --git a/core/src/main/resources/org/apache/spark/ui/static/streaming-page.css b/core/src/main/resources/org/apache/spark/ui/static/streaming-page.css index 0dbe9d8369703..fe07cec058d32 100644 --- a/core/src/main/resources/org/apache/spark/ui/static/streaming-page.css +++ b/core/src/main/resources/org/apache/spark/ui/static/streaming-page.css @@ -44,3 +44,11 @@ .bar rect:hover { fill: orange; } + +.timeline { + width: 500px; +} + +.distribution { + width: 300px; +} diff --git a/core/src/main/resources/org/apache/spark/ui/static/streaming-page.js b/core/src/main/resources/org/apache/spark/ui/static/streaming-page.js index 5557a6288534c..772719cec967f 100644 --- a/core/src/main/resources/org/apache/spark/ui/static/streaming-page.js +++ b/core/src/main/resources/org/apache/spark/ui/static/streaming-page.js @@ -50,7 +50,8 @@ function hideGraphTooltip() { * @param unitY the unit of Y axis */ function drawTimeline(id, data, minX, maxX, minY, maxY, unitY) { - var margin = {top: 20, right: 30, bottom: 30, left: 50}; + d3.select(d3.select(id).node().parentNode).style("padding", "8px 0 8px 8px").style("border-right", "0px solid white"); + var margin = {top: 20, right: 27, bottom: 30, left: 50}; var width = 500 - margin.left - margin.right; var height = 150 - margin.top - margin.bottom; @@ -58,14 +59,7 @@ function drawTimeline(id, data, minX, maxX, minY, maxY, unitY) { var y = d3.scale.linear().domain([minY, maxY]).range([height, 0]); var timeFormat = d3.time.format("%H:%M:%S") - var xAxis = d3.svg.axis().scale(x).orient("bottom").ticks(10) - .tickFormat(function(d) { - if (d.getTime() == minX || d.getTime() == maxX) { - return timeFormat(d); - } else { - return "x"; - } - }); + var xAxis = d3.svg.axis().scale(x).orient("bottom").tickFormat(timeFormat); var yAxis = d3.svg.axis().scale(y).orient("left").ticks(5); var line = d3.svg.line() @@ -136,7 +130,8 @@ function drawTimeline(id, data, minX, maxX, minY, maxY, unitY) { * @param unitY the unit of Y axis */ function drawDistribution(id, values, minY, maxY, unitY) { - var margin = {top: 20, right: 30, bottom: 30, left: 50}; + d3.select(d3.select(id).node().parentNode).style("padding", "8px 8px 8px 0").style("border-left", "0px solid white"); + var margin = {top: 20, right: 30, bottom: 30, left: 10}; var width = 300 - margin.left - margin.right; var height = 150 - margin.top - margin.bottom; @@ -152,7 +147,7 @@ function drawDistribution(id, values, minY, maxY, unitY) { .range([0, width]); var xAxis = d3.svg.axis().scale(x).orient("bottom").ticks(5); - var yAxis = d3.svg.axis().scale(y).orient("left").ticks(5); + var yAxis = d3.svg.axis().scale(y).orient("left").ticks(0).tickFormat(function(d) { return ""; }); var svg = d3.select(id).append("svg") .attr("width", width + margin.left + margin.right) diff --git a/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingPage.scala b/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingPage.scala index e4ad4b25bb53f..aa4a246a62470 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingPage.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingPage.scala @@ -260,8 +260,8 @@ private[ui] class StreamingPage(parent: StreamingTab)
Avg: {eventRateForAllReceivers.avg.map(_.formatted("%.2f")).getOrElse(emptyCell)} events/sec
- {timelineDataForEventRateOfAllReceivers} - {distributionDataForEventRateOfAllReceivers} + {timelineDataForEventRateOfAllReceivers} + {distributionDataForEventRateOfAllReceivers} @@ -273,24 +273,24 @@ private[ui] class StreamingPage(parent: StreamingTab)
Scheduling Delay
Avg: {formatDurationOption(schedulingDelay.avg)}
- {timelineDataForSchedulingDelay} - {distributionDataForSchedulingDelay} + {timelineDataForSchedulingDelay} + {distributionDataForSchedulingDelay}
Processing Time
Avg: {formatDurationOption(processingTime.avg)}
- {timelineDataForProcessingTime} - {distributionDataForProcessingTime} + {timelineDataForProcessingTime} + {distributionDataForProcessingTime}
Total Delay
Avg: {formatDurationOption(totalDelay.avg)}
- {timelineDataForTotalDelay} - {distributionDataForTotalDelay} + {timelineDataForTotalDelay} + {distributionDataForTotalDelay} @@ -313,9 +313,9 @@ private[ui] class StreamingPage(parent: StreamingTab) - Status - Location - Last Error Time +
Status
+
Location
+
Last Error Time
Last Error Message @@ -380,10 +380,10 @@ private[ui] class StreamingPage(parent: StreamingTab) {receiverLastError} - + {timelineForEventRate} - {distributionForEventsRate} + {distributionForEventsRate} // scalastyle:on }