ソースを参照

HUE-5253 [editor] Improve query time formatting on long running queries

Enrico Berti 9 年 前
コミット
27c007c784

+ 10 - 9
desktop/core/src/desktop/static/desktop/js/hue.utils.js

@@ -344,15 +344,16 @@ var hueDebugTimer = (function () {
 
 
 Number.prototype.toHHMMSS = function () {
-  var _s = this;
-  var _ms = _s % 1000;
-  _s = (_s - _ms) / 1000;
-  var _secs = _s % 60;
-  _s = (_s - _secs) / 60;
-  var _mins = _s % 60;
-  var _hrs = (_s - _mins) / 60;
-  return (_hrs > 0 ? _hrs + "h, " : "") + (_mins > 0 ? _mins + "m, " : "") + _secs + "." + _ms + "s";
-
+  var n = this;
+  var millis = n % 1000;
+  n = (n - millis) / 1000;
+  var seconds = n % 60;
+  n = (n - seconds) / 60;
+  var minutes = n % 60;
+  n = (n - minutes) / 60;
+  var hours = n % 24;
+  var days = (n - hours) / 24;
+  return (days > 0 ? days + "d, " : "") + (hours > 0 ? hours + "h, " : "") + (minutes > 0 ? minutes + "m, " : "") + seconds + (millis > 0 && minutes == 0 && hours == 0 && days == 0 ? "." + millis : "") + "s";
 }
 
 if (!('getParameter' in window.location)) {

+ 27 - 0
desktop/core/src/desktop/static/desktop/spec/hueUtilsSpec.js

@@ -0,0 +1,27 @@
+// Licensed to Cloudera, Inc. under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  Cloudera, Inc. licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+(function () {
+  describe("hue.utils.js", function() {
+
+    it("should skip the milliseconds in number format if the time is more than 60 seconds", function() {
+      expect(Number(10000000344).toHHMMSS()).toEqual('115d, 17h, 46m, 40s');
+    });
+
+    it("should show the milliseconds in number format if the time is less than 60 seconds", function() {
+      expect(Number(10123).toHHMMSS()).toEqual('10.123s');
+    });
+  });
+})();

+ 3 - 0
desktop/core/src/desktop/templates/jasmineRunner.html

@@ -34,6 +34,9 @@
   <script type="text/javascript" src="../static/desktop/ext/js/jasmine-2.3.4/boot.js"></script>
   <script type="text/javascript" src="../static/desktop/ext/js/jasmine-2.3.4/mock-ajax.js"></script>
 
+  <script type="text/javascript" src="../static/desktop/js/hue.utils.js"></script>
+  <script type="text/javascript" src="../static/desktop/spec/hueUtilsSpec.js"></script>
+
   <script type="text/javascript" src="../static/desktop/spec/apiHelperSpec.js"></script>
 
   <script type="text/javascript" src="../static/desktop/js/sqlAutocompleter.js"></script>