From f91b49c95dd72bc5c2f80afb4784eaf24fbb4c74 Mon Sep 17 00:00:00 2001
From: chenzhx <346839943@qq.com>
Date: Mon, 7 Nov 2016 18:40:26 +0800
Subject: [PATCH] KYLIN 2119 Wrong chart value and sort when process scientific
notation
---
webapp/app/index.html | 2 +-
webapp/app/js/controllers/query.js | 11 +++++++++--
webapp/app/js/services/graph.js | 10 +++++++++-
webapp/app/js/utils/utils.js | 20 ++++++++++++++++++++
4 files changed, 39 insertions(+), 4 deletions(-)
diff --git a/webapp/app/index.html b/webapp/app/index.html
index 8fb2cb9..ad881d5 100644
--- a/webapp/app/index.html
+++ b/webapp/app/index.html
@@ -163,7 +163,7 @@
-
+
diff --git a/webapp/app/js/controllers/query.js b/webapp/app/js/controllers/query.js
index dede294..6be915b 100644
--- a/webapp/app/js/controllers/query.js
+++ b/webapp/app/js/controllers/query.js
@@ -19,7 +19,7 @@
'use strict';
KylinApp
- .controller('QueryCtrl', function ($scope, storage, $base64, $q, $location, $anchorScroll, $routeParams, QueryService, $modal, MessageService, $domUtilityService, $timeout, TableService,SweetAlert) {
+ .controller('QueryCtrl', function ($scope, storage, $base64, $q, $location, $anchorScroll, $routeParams, QueryService, $modal, MessageService, $domUtilityService, $timeout, TableService, SweetAlert, VdmUtil) {
$scope.mainPanel = 'query';
$scope.rowsPerPage = 50000;
$scope.base64 = $base64;
@@ -207,7 +207,14 @@ KylinApp
} else {
oneQuery.result.data = data;
}
-
+ angular.forEach(oneQuery.result.data,function(row,index){
+ angular.forEach(row,function(column,value){
+ var float =VdmUtil.SCToFloat(column);
+ if (float!=""){
+ oneQuery.result.data[index][value]=parseFloat(float);
+ }
+ });
+ });
$scope.curQuery.result.isResponsePartial = result.partial;
}
diff --git a/webapp/app/js/services/graph.js b/webapp/app/js/services/graph.js
index b191c50..dc69519 100644
--- a/webapp/app/js/services/graph.js
+++ b/webapp/app/js/services/graph.js
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-KylinApp.service('GraphService', function (GraphBuilder) {
+KylinApp.service('GraphService', function (GraphBuilder, VdmUtil) {
this.buildGraph = function (query) {
var graphData = null;
@@ -27,6 +27,14 @@ KylinApp.service('GraphService', function (GraphBuilder) {
metricsList = metricsList.concat(query.graph.state.metrics);
angular.forEach(metricsList, function (metrics, index) {
var aggregatedData = {};
+ angular.forEach(query.result.results,function(row,index){
+ angular.forEach(row,function(column,value){
+ var float = VdmUtil.SCToFloat(column);
+ if (float!=""){
+ query.result.results[index][value]=float;
+ }
+ });
+ });
angular.forEach(query.result.results, function (data, index) {
aggregatedData[data[dimension.index]] = (!!aggregatedData[data[dimension.index]] ? aggregatedData[data[dimension.index]] : 0)
+ parseFloat(data[metrics.index].replace(/[^\d\.\-]/g, ""));
diff --git a/webapp/app/js/utils/utils.js b/webapp/app/js/utils/utils.js
index d838e9e..d25c4e1 100644
--- a/webapp/app/js/utils/utils.js
+++ b/webapp/app/js/utils/utils.js
@@ -63,6 +63,26 @@ KylinApp.factory('VdmUtil', function ($modal, $timeout, $location, $anchorScroll
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
+ },
+
+ SCToFloat:function(data){
+ var resultValue = "";
+ if (data.indexOf('E') != -1){
+ var regExp = new RegExp('^((\\d+.?\\d+)[Ee]{1}(\\d+))$', 'ig');
+ var result = regExp.exec(data);
+ var power = "";
+ if (result != null){
+ resultValue = result[2];
+ power = result[3];
+ }
+ if (resultValue != ""){
+ if (power != ""){
+ var powVer = Math.pow(10, power);
+ resultValue = (resultValue * powVer).toFixed(2);
+ }
+ }
+ }
+ return resultValue;
}
}
});
--
2.7.2.windows.1