diff --git a/tools/gui/gulp-tasks/bundles/bundle-js/index.js b/tools/gui/gulp-tasks/bundles/bundle-js/index.js
index e994d30..25e0aed 100644
--- a/tools/gui/gulp-tasks/bundles/bundle-js/index.js
+++ b/tools/gui/gulp-tasks/bundles/bundle-js/index.js
@@ -60,7 +60,7 @@
     // gulp.task('bundle-vendor', () => bundle(vendor, 'vendor.js'));
     gulp.task('bundle-js', () => bundle(bundleFiles, 'onos.js'));
     gulp.task('watch-js', () => {
-        gulp.watch([GUI_BASE + '**/*.js', `!${GUI_BASE}/dist/**/*`], ['bundle-js']);
+        gulp.watch([GUI_BASE + 'app/**/*.js'], ['bundle-js']);
     }).on('change', (event) => {
         console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
     });
diff --git a/web/gui/src/main/webapp/app/view/topo/topoPanel.js b/web/gui/src/main/webapp/app/view/topo/topoPanel.js
index 3301e5b..72e3f67 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoPanel.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoPanel.js
@@ -231,6 +231,8 @@
 
         title.text(data.title);
         listProps(tbody, data);
+
+        augmentDetailPanel();
     }
 
     // === -----------------------------------------------------
@@ -365,6 +367,10 @@
         }
     }
 
+    function summaryBBox() {
+        return d3.select('#' + idSum).node().getBoundingClientRect();
+    }
+
     function hideDetailPanel() {
         detail.panel().hide();
     }
@@ -373,7 +379,8 @@
 
     function augmentDetailPanel() {
         var d = detail,
-            downPos = sumFromTop + sumMax + padFudge;
+            downPos = summaryBBox().bottom + padTop;
+
         d.ypos = { up: sumFromTop, down: downPos, current: downPos };
 
         d._move = function (y, cb) {
diff --git a/web/gui/src/main/webapp/tests/app/view/topo/topo-spec.js b/web/gui/src/main/webapp/tests/app/view/topo/topo-spec.js
index cb7fcde..e7412a8 100644
--- a/web/gui/src/main/webapp/tests/app/view/topo/topo-spec.js
+++ b/web/gui/src/main/webapp/tests/app/view/topo/topo-spec.js
@@ -31,6 +31,9 @@
         d3Topo = d3.select('body').append('div').attr('id', 'ov-topo');
         d3Topo.append('svg');
 
+        d3.select('body').append('div').attr('id', 'topo-p-summary');
+        d3.select('body').append('div').attr('id', 'topo-p-details');
+
         createController = function () {
             return $controller('OvTopoCtrl', {
                 '$scope': $scope,
