Skip to content

Commit 0fcf91e

Browse files
committed
Add some spinners to the page on top of things that take a while.
1 parent 6a731bb commit 0fcf91e

File tree

3 files changed

+31
-7
lines changed

3 files changed

+31
-7
lines changed

codepulse/src/main/resources/toserve/pages/traces/traces.css

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,13 @@ body > .overlay:before {
2424

2525
.main-column {
2626
width: calc(100% - 250px);
27-
/*float: left;*/
28-
padding-top: 45px;
27+
margin-top: 45px;
28+
min-height: 200px;
29+
}
30+
31+
.main-column > .overlay {
32+
background-color: transparent;
33+
z-index: 1;
2934
}
3035

3136
.side-column {
@@ -130,6 +135,10 @@ body > .overlay:before {
130135
margin-top: 5px;
131136
}
132137

138+
.traces-scope {
139+
min-height: 200px;
140+
}
141+
133142
.traces-scope:before, .traces-scope:after {
134143
display: table;
135144
line-height: 0;

codepulse/src/main/resources/toserve/pages/traces/traces.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ function logTime(label, func) {
2828
$(document).ready(function(){
2929

3030
var treemapContainer = $('#treemap-container'),
31+
packagesContainer = $('#packages'),
3132

3233
// initialize a treemap widget
3334
treemapWidget = new CodebaseTreemap('#treemap-container .widget-body').nodeSizing('line-count')
@@ -161,6 +162,10 @@ $(document).ready(function(){
161162
$('#treemap').toggleClass('in-view', show)
162163
})
163164

165+
// Start a spinner to indicate that the package list is loading.
166+
// It will be stopped after the PackageController is created.
167+
packagesContainer.overlay('wait')
168+
164169
/*
165170
* Request the treemap data from the server. Note that coverage lists
166171
* are only specified for the most specific element; for the sake of
@@ -174,7 +179,9 @@ $(document).ready(function(){
174179
Trace.onTreeDataReady(function(){
175180
var packageTree = Trace.packageTree
176181

177-
var controller = new PackageController(packageTree, $('#packages'), $('#totals'), $('#clear-selections-button'))
182+
var controller = new PackageController(packageTree, packagesContainer, $('#totals'), $('#clear-selections-button'))
183+
184+
packagesContainer.overlay('ready')
178185

179186
// When the selection of "instrumented" packages changes, trigger a coloring update
180187
// on the treemap, since nodes get special treatment if they are uninstrumented.
@@ -248,7 +255,14 @@ $(document).ready(function(){
248255
.nodeColoring(treemapColoring())
249256

250257
treemapData.onValue(function(tree){
251-
treemapWidget.data(tree).update()
258+
treemapContainer.overlay('wait')
259+
// put the following in a callback so the overlay has a chance to trigger
260+
// (the treemap data update can be expensive, and since it modifies the DOM,
261+
// the overlay may never actually show up because the DOM is being blocked.)
262+
setTimeout(function(){
263+
treemapWidget.data(tree).update()
264+
treemapContainer.overlay('ready')
265+
}, 1)
252266
})
253267

254268
Trace.coverageRecords.onValue(setTreemapCoverage)

codepulse/src/main/resources/toserve/widgets/overlay/overlay.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@ $(document).ready(function(){
99

1010
function Overlay(container, _opts){
1111

12-
var opts = _opts || { radius: 4, length: 7, width: 4, lines: 10 }
12+
var opts = _opts || { radius: 4, length: 7, width: 4, lines: 10, spinnerOnly: false }
1313

1414
var spinner = new Spinner(opts)
1515
var $overlay = $("<div class='overlay'>")
16+
var spinnerOnly = opts['spinnerOnly']
1617
var overlay = $overlay[0]
1718

1819
$(container).addClass("overlay-container")
@@ -23,7 +24,7 @@ function Overlay(container, _opts){
2324
if(!activated){
2425
$(container).addClass("overlay-waiting")
2526
activated = true
26-
$overlay.appendTo(container)
27+
if(!spinnerOnly) $overlay.appendTo(container)
2728
spinner.spin(overlay)
2829
}
2930
}
@@ -33,7 +34,7 @@ function Overlay(container, _opts){
3334
$(container).removeClass("overlay-waiting")
3435
activated = false
3536
spinner.stop()
36-
$overlay.detach()
37+
if(!spinnerOnly) $overlay.detach()
3738
}
3839
}
3940

0 commit comments

Comments
 (0)