From 585ddb47d72d7ba9adb494b0bf00304720fa22c8 Mon Sep 17 00:00:00 2001 From: ascrutae Date: Thu, 12 May 2016 21:11:23 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=8F=90=E4=BA=A4=E9=83=A8=E5=88=86?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../js/analysisResultViewResovler.js | 69 +++++++++++++++++-- .../pages/anls-result/analysisResult.ftl | 57 ++++++++------- 2 files changed, 99 insertions(+), 27 deletions(-) diff --git a/skywalking-webui/src/main/webapp/bower_components/skywalking/js/analysisResultViewResovler.js b/skywalking-webui/src/main/webapp/bower_components/skywalking/js/analysisResultViewResovler.js index abc8817476..c531fe44f6 100644 --- a/skywalking-webui/src/main/webapp/bower_components/skywalking/js/analysisResultViewResovler.js +++ b/skywalking-webui/src/main/webapp/bower_components/skywalking/js/analysisResultViewResovler.js @@ -67,6 +67,7 @@ AnalysisResultViewResolver.prototype.bindEvent = function () { AnalysisResultViewResolver.prototype.showTypicalCallTree = function (nodeToken) { this.currentTypicalTreeNodes = {callChainTreeNodeList: []}; this.currentTypicalTreeNodeMapping = {typicalTreeIds: []}; + var tmpTypicalCallChainNodeIds = {}; for (var i = 0; i < this.typicCallChainData.length; i++) { var node = this.typicCallChainData[i]; var tmpInfo = node.treeNodes[nodeToken]; @@ -75,15 +76,69 @@ AnalysisResultViewResolver.prototype.showTypicalCallTree = function (nodeToken) } var tmpTypicalCallChain = []; + for (var key in node.treeNodes) { var tmpNode = node.treeNodes[key]; tmpNode.anlyResult = JSON.parse($("#" + key).text()); tmpTypicalCallChain.push(tmpNode); - this.currentTypicalTreeNodes.callChainTreeNodeList.push(tmpNode); + if (tmpTypicalCallChainNodeIds[key] == undefined || tmpTypicalCallChainNodeIds[key] == "") { + this.currentTypicalTreeNodes.callChainTreeNodeList.push(tmpNode); + tmpTypicalCallChainNodeIds[key] = {}; + } } this.currentTypicalTreeNodeMapping[node.callTreeId] = tmpTypicalCallChain; this.currentTypicalTreeNodeMapping.typicalTreeIds.push({"callTreeToken": node.callTreeId}); } + + + this.sortTypicalCallChainTreeNode(this.currentTypicalTreeNodes.callChainTreeNodeList); +} + +AnalysisResultViewResolver.prototype.sortTypicalCallChainTreeNode = function (callChainTreeNodeList) { + for (var i = 0 ; i < callChainTreeNodeList.length - 1; i++){ + var testTraceLevelId = callChainTreeNodeList[i].traceLevelId; + var index = i; + for (var j = i + 1; j < callChainTreeNodeList.length; j++){ + if (!this.compareTraceLevelId(testTraceLevelId, callChainTreeNodeList[j].traceLevelId)){ + index = j; + testTraceLevelId = callChainTreeNodeList[j].traceLevelId; + } + } + + if (index != i){ + var tmpNode = callChainTreeNodeList[i]; + callChainTreeNodeList[i] = callChainTreeNodeList[index]; + callChainTreeNodeList[index] = tmpNode; + } + } +} + +AnalysisResultViewResolver.prototype.compareTraceLevelId = function (traceLevelIdA, traceLevelIdB) { + var traceLevelIdAArray = traceLevelIdA.split("."); + var traceLevelIdBArray = traceLevelIdB.split("."); + var result = -1; + var index = 0; + while (true) { + if (index >= traceLevelIdAArray.length) { + result = true; + break; + } + + if (index >= traceLevelIdBArray.length) { + result = false; + break; + } + if (parseInt(traceLevelIdAArray[index]) > parseInt(traceLevelIdBArray[index])) { + result = false; + break; + } else if (parseInt(traceLevelIdAArray[index]) < parseInt(traceLevelIdBArray[index])) { + result = true; + break; + } + index++; + } + + return result; } AnalysisResultViewResolver.prototype.paintChainTreeDataTable = function () { @@ -146,7 +201,8 @@ AnalysisResultViewResolver.prototype.bindGotoTypicalPageEvent = function () { $("button[name='showTypicalCallTreeBtn']").each(function () { $(this).click(function () { var treeNodeToken = $(this).attr("value"); - $(".modal-backdrop").remove(); + //$(".modal-backdrop").remove(); + $("#modal" + treeNodeToken).modal('hide'); self.showTypicalCallTree(treeNodeToken); var template = $.templates("#typicalCallChainTreesTmpl"); @@ -170,15 +226,20 @@ AnalysisResultViewResolver.prototype.bindGotoTypicalPageEvent = function () { treeIds.push($(this).attr("value")); } }); - + var tmpTpicalTreeNodes = {}; self.currentTypicalTreeNodes.callChainTreeNodeList = []; for (var i = 0; i < treeIds.length; i++) { var tmpNodes = self.currentTypicalTreeNodeMapping[treeIds[i]]; for (var j = 0; j < tmpNodes.length; j++) { - self.currentTypicalTreeNodes.callChainTreeNodeList.push(tmpNodes[j]); + if (tmpTpicalTreeNodes[tmpNodes[j].nodeToken] == undefined || tmpTpicalTreeNodes[tmpNodes[j].nodeToken] == "") { + self.currentTypicalTreeNodes.callChainTreeNodeList.push(tmpNodes[j]); + tmpTpicalTreeNodes[tmpNodes[j].nodeToken] = {}; + } } } + self.sortTypicalCallChainTreeNode(self.currentTypicalTreeNodes.callChainTreeNodeList); + template = $.templates("#typicalTreeTableTmpl"); var htmlOutput = template.render((self.convertAnalysisResult(self.currentTypicalTreeNodes))); $("#typicalTreeTableDataBody").empty(); diff --git a/skywalking-webui/src/main/webapp/pages/anls-result/analysisResult.ftl b/skywalking-webui/src/main/webapp/pages/anls-result/analysisResult.ftl index 3cecb235c0..acd62ebfbb 100644 --- a/skywalking-webui/src/main/webapp/pages/anls-result/analysisResult.ftl +++ b/skywalking-webui/src/main/webapp/pages/anls-result/analysisResult.ftl @@ -47,6 +47,7 @@
+ @@ -59,29 +60,7 @@ {{>viewPoint}} - {{>anlyResult.totalCall}} @@ -102,9 +81,38 @@ + + +<#macro viewPointPickUp> + + + <#macro typicalCallChainTrees> @@ -146,6 +155,7 @@ {{for typicalTreeIds}} 典型调用链{{: #index}}  {{/for}} + @@ -175,6 +185,7 @@ + -- GitLab