diff --git a/tensorboard/plugins/debugger/tf_debugger_dashboard/BUILD b/tensorboard/plugins/debugger/tf_debugger_dashboard/BUILD
index 457baa1065..086dcf00a1 100644
--- a/tensorboard/plugins/debugger/tf_debugger_dashboard/BUILD
+++ b/tensorboard/plugins/debugger/tf_debugger_dashboard/BUILD
@@ -45,6 +45,7 @@ ts_web_library(
"@org_polymer_paper_input",
"@org_polymer_paper_item",
"@org_polymer_paper_menu",
+ "@org_polymer_paper_progress",
"@org_polymer_paper_slider",
"@org_polymer_paper_spinner",
"@org_polymer_paper_styles",
diff --git a/tensorboard/plugins/debugger/tf_debugger_dashboard/tf-debugger-dashboard.html b/tensorboard/plugins/debugger/tf_debugger_dashboard/tf-debugger-dashboard.html
index 894bc8fb80..640aa7e195 100644
--- a/tensorboard/plugins/debugger/tf_debugger_dashboard/tf-debugger-dashboard.html
+++ b/tensorboard/plugins/debugger/tf_debugger_dashboard/tf-debugger-dashboard.html
@@ -22,6 +22,8 @@
+
+
@@ -99,7 +101,7 @@
Continue...
out-graph-hierarchy="{{graphHierarchy}}"
out-graph="{{graph}}"
out-stats="{{stats}}"
- progress="{{_progress}}"
+ progress="{{_graphProgress}}"
>
@@ -124,18 +126,15 @@ Continue...
+
+
-
Continue...
width: 350px;
display: inline-block;
}
+ #top-right-progress-bar {
+ width: 100%;
+ display: inline-block;
+ vertical-align: middle;
+ }
.line-item {
display: block;
padding-top: 5px;
@@ -230,6 +234,11 @@ Continue...
min-width: 150px;
border: 1px solid #d4d4d4;
}
+ .spinner {
+ width: 20px;
+ height: 20px;
+ vertical-align: middle;
+ }
.node-entries {
height: 66%;
overflow: auto;
@@ -390,6 +399,10 @@ Continue...
value: -1,
},
+ _graphProgress: {
+ type: Object,
+ },
+
_requestManager: {
type: Object,
value: () => new tf_backend.RequestManager(50),
@@ -398,6 +411,7 @@ Continue...
observers: [
"_onActiveRuntimeGraphDeviceNameChange(_activeRuntimeGraphDeviceName)",
+ "_graphProgressUpdated(_graphProgress)",
],
ready() {
@@ -484,6 +498,7 @@ Continue...
this._maybeUpdateTensorValueViews(
tensorName, responseData['debug_op']);
+ this._setTopRightSpinnerState(false);
} else {
console.error(
'Invalid long-polling response type: ', responseType);
@@ -734,6 +749,7 @@ Continue...
if (this._activeSessionRunKey == null) {
return;
}
+ this._setTopRightSpinnerState(true);
// First, check to see if any new device GraphDef(s) have arrived and if
// so, retrieve them.
@@ -788,6 +804,7 @@ Continue...
this._continueToType = '';
this._continueToTarget = '';
this._continueToCounterTarget = -1;
+ this._setTopRightSpinnerState(false);
},
_topRightSelectedChanged(topRightSelected) {
@@ -836,6 +853,28 @@ Continue...
console.log('Breakpoint set_state response: ', response);
});
},
+
+ _graphProgressUpdated(progress) {
+ const topRightProgressBar = this.$$('#top-right-progress-bar');
+ if (this._latestSessionRun == null) {
+ // No Session.run() has connected yet. Do not show the spinner(s) or
+ // the progress bar(s).
+ topRightProgressBar.setAttribute('value', 0);
+ this._setTopRightSpinnerState(false);
+ } else {
+ topRightProgressBar.setAttribute('value', progress.value);
+ this._setTopRightSpinnerState(progress.value < 100);
+ }
+ },
+
+ _setTopRightSpinnerState(isActive) {
+ const topRightSpinner = this.$$('#top-right-spinner');
+ if (isActive) {
+ topRightSpinner.setAttribute('active', true);
+ } else {
+ topRightSpinner.removeAttribute('active');
+ }
+ }
});
tf_tensorboard.registerDashboard({
diff --git a/tensorboard/plugins/debugger/tf_debugger_dashboard/tf-op-selector.html b/tensorboard/plugins/debugger/tf_debugger_dashboard/tf-op-selector.html
index 1a7d054430..e899e8b590 100644
--- a/tensorboard/plugins/debugger/tf_debugger_dashboard/tf-op-selector.html
+++ b/tensorboard/plugins/debugger/tf_debugger_dashboard/tf-op-selector.html
@@ -20,6 +20,7 @@
+
@@ -47,6 +48,12 @@
value="{{_filterInput}}"
>
+
+