You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@htrace.apache.org by iw...@apache.org on 2015/11/09 16:03:58 UTC
incubator-htrace git commit: HTRACE-293. htrace-web: control-click
should fully expand trace trees (Colin Patrick McCabe via iwasakims)
Repository: incubator-htrace
Updated Branches:
refs/heads/master b22336bff -> 112e6684a
HTRACE-293. htrace-web: control-click should fully expand trace trees (Colin Patrick McCabe via iwasakims)
Project: http://git-wip-us.apache.org/repos/asf/incubator-htrace/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-htrace/commit/112e6684
Tree: http://git-wip-us.apache.org/repos/asf/incubator-htrace/tree/112e6684
Diff: http://git-wip-us.apache.org/repos/asf/incubator-htrace/diff/112e6684
Branch: refs/heads/master
Commit: 112e6684a3ee73d9e8a76af6c3854161333e143d
Parents: b22336b
Author: Masatake Iwasaki <iw...@apache.org>
Authored: Mon Nov 9 04:56:02 2015 +0900
Committer: Masatake Iwasaki <iw...@apache.org>
Committed: Mon Nov 9 04:56:02 2015 +0900
----------------------------------------------------------------------
htrace-webapp/src/main/webapp/app/span.js | 52 ++++++++++++++++++++
.../src/main/webapp/app/span_widget.js | 20 +++++---
.../src/main/webapp/app/triangle_button.js | 2 +-
3 files changed, 65 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/112e6684/htrace-webapp/src/main/webapp/app/span.js
----------------------------------------------------------------------
diff --git a/htrace-webapp/src/main/webapp/app/span.js b/htrace-webapp/src/main/webapp/app/span.js
index cd87543..ca867ec 100644
--- a/htrace-webapp/src/main/webapp/app/span.js
+++ b/htrace-webapp/src/main/webapp/app/span.js
@@ -145,6 +145,32 @@ htrace.Span = Backbone.Model.extend({
return obj;
},
+ reifyParentsRecursive: function(depth) {
+ var rootDeferred = jQuery.Deferred();
+ var span = this;
+ span.reifyParents().done(function(err) {
+ if ((err != "") || (depth <= 0)) {
+ rootDeferred.resolve(err);
+ return;
+ }
+ var recursivePromises = [];
+ var reifiedParents = span.get("reifiedParents");
+ for (var j = 0; j < reifiedParents.length; j++) {
+ recursivePromises.push(reifiedParents[j].reifyParentsRecursive(depth - 1));
+ }
+ $.when.apply($, recursivePromises).then(function() {
+ for (var i = 0; i < arguments.length; i++) {
+ if (arguments[i] != "") {
+ rootDeferred.resolve(arguments[i]);
+ return;
+ }
+ }
+ rootDeferred.resolve("");
+ });
+ });
+ return rootDeferred.promise();
+ },
+
//
// Although the parent IDs are always present in the 'parents' field of the
// span, sometimes we need the actual parent span models. In that case we
@@ -193,6 +219,32 @@ htrace.Span = Backbone.Model.extend({
return rootDeferred.promise();
},
+ reifyChildrenRecursive: function(depth) {
+ var rootDeferred = jQuery.Deferred();
+ var span = this;
+ span.reifyChildren().done(function(err) {
+ if ((err != "") || (depth <= 0)) {
+ rootDeferred.resolve(err);
+ return;
+ }
+ var recursivePromises = [];
+ var reifiedChildren = span.get("reifiedChildren");
+ for (var j = 0; j < reifiedChildren.length; j++) {
+ recursivePromises.push(reifiedChildren[j].reifyChildrenRecursive(depth - 1));
+ }
+ $.when.apply($, recursivePromises).then(function() {
+ for (var i = 0; i < arguments.length; i++) {
+ if (arguments[i] != "") {
+ rootDeferred.resolve(arguments[i]);
+ return;
+ }
+ }
+ rootDeferred.resolve("");
+ });
+ });
+ return rootDeferred.promise();
+ },
+
//
// The span itself does not contain its children. However, the server has an
// index which can be used to easily find the children of a particular span.
http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/112e6684/htrace-webapp/src/main/webapp/app/span_widget.js
----------------------------------------------------------------------
diff --git a/htrace-webapp/src/main/webapp/app/span_widget.js b/htrace-webapp/src/main/webapp/app/span_widget.js
index 50bea91..f7c447a 100644
--- a/htrace-webapp/src/main/webapp/app/span_widget.js
+++ b/htrace-webapp/src/main/webapp/app/span_widget.js
@@ -270,16 +270,18 @@ htrace.SpanWidget = function(params) {
xF: this.xB + (this.xDB / 2) - 2,
y0: this.y0 + 2,
yF: this.yF - 2,
- callback: function() {
- $.when(widget.span.reifyParents()).done(function (result) {
- console.log("reifyParents: result was '" + result + "'");
+ callback: function(e) {
+ var depth = (e.raw.ctrlKey) ? 100 : 0;
+ $.when(widget.span.reifyParentsRecursive(depth)).done(function(result) {
+ console.log("reifyParentsRecursive(" + depth + "): result was '" +
+ result + "'");
if (result != "") {
alert(result);
} else {
widget.manager.searchResultsView.render();
}
});
- },
+ }
});
}
if ((this.span.get("reifiedChildren") == null) && (this.allowDownButton)) {
@@ -291,16 +293,18 @@ htrace.SpanWidget = function(params) {
xF: this.xD - 2,
y0: this.y0 + 2,
yF: this.yF - 2,
- callback: function() {
- $.when(widget.span.reifyChildren()).done(function (result) {
- console.log("reifyChildren: result was '" + result + "'");
+ callback: function(e) {
+ var depth = (e.raw.ctrlKey) ? 100 : 0;
+ $.when(widget.span.reifyChildrenRecursive(depth)).done(function (result) {
+ console.log("reifyChildrenRecursive(" + depth + "): result was '" +
+ result + "'");
if (result != "") {
alert(result);
} else {
widget.manager.searchResultsView.render();
}
});
- },
+ }
});
}
this.manager.register("mouseDown", this);
http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/112e6684/htrace-webapp/src/main/webapp/app/triangle_button.js
----------------------------------------------------------------------
diff --git a/htrace-webapp/src/main/webapp/app/triangle_button.js b/htrace-webapp/src/main/webapp/app/triangle_button.js
index f252476..cd8f39b 100644
--- a/htrace-webapp/src/main/webapp/app/triangle_button.js
+++ b/htrace-webapp/src/main/webapp/app/triangle_button.js
@@ -79,7 +79,7 @@ htrace.TriangleButton = function(params) {
return false;
case "mouseUp":
if (this.selected) {
- this.callback();
+ this.callback(e);
this.selected = false;
}
this.manager.unregister("mouseUp", this);