]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-2074 Update the JS script + JS data generation to fix bug on IE
authorFabrice Bellingard <bellingard@gmail.com>
Thu, 1 Sep 2011 15:46:11 +0000 (17:46 +0200)
committerFabrice Bellingard <bellingard@gmail.com>
Thu, 1 Sep 2011 15:46:11 +0000 (17:46 +0200)
plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/timeline.html.erb
sonar-server/src/main/webapp/javascripts/protovis-sonar.js

index e8987f98ca467dd3e5775600fab833b108d567d8..224099ade839085e280f4192d1fe45373769f6ae 100644 (file)
@@ -38,7 +38,7 @@
       js_data += "["
       metric_data_map[metric_id].each() do |metric_data|
         m_date = Time.parse(metric_data[:date])
-        js_data += "{\"x\":d("
+        js_data += "{x:d("
         js_data += m_date.year.to_s
         js_data += ","
         # Need to decrease by 1 the month as the JS Date object start months at 0 (= January)
         js_data += m_date.min.to_s
         js_data += ","
         js_data += m_date.sec.to_s
-        js_data += "),\"y\":" 
+        js_data += "),y:" 
         js_data += sprintf( "%0.02f", metric_data[:value])
         js_data +=  "},"
         if index == 0
           # we fill the js_snapshots array (no need to do this more than once)
-          js_snapshots += "{\"sid\":"
+          js_snapshots += "{sid:"
           js_snapshots += metric_data[:sid]
-          js_snapshots += ",\"d\":\""
+          js_snapshots += ",d:\""
           js_snapshots += l m_date, :format => :long
           js_snapshots += "\"},"
         end
       end
-      js_data += "],"
+      js_data = js_data.chomp(',') + "],"
     end
   end
-  js_data += "]"
-  js_snapshots += "]"
-  js_metrics += "]"
+  js_data = js_data.chomp(',') + "]"
+  js_snapshots = js_snapshots.chomp(',') + "]"
+  js_metrics = js_metrics.chomp(',') + "]"
   
   # Prepare also event structure if required
   unless widget_properties["hideEvents"]
@@ -84,9 +84,9 @@
     js_events = "["
     events.keys().sort.each() do |e_date|
       e_details = events[e_date]
-      js_events += "{\"sid\":"
+      js_events += "{sid:"
       js_events += e_details[0].snapshot_id.to_s
-      js_events += ",\"d\":d("
+      js_events += ",d:d("
       js_events += e_date.year.to_s
       js_events += ","
       # Need to decrease by 1 the month as the JS Date object start months at 0 (= January)
       js_events += e_date.min.to_s
       js_events += ","
       js_events += e_date.sec.to_s
-      js_events += "),\"l\":["
+      js_events += "),l:["
       e_details.each() do |e|
-        js_events += "{\"n\":\""
+        js_events += "{n:\""
         js_events += e.name
         js_events += "\"},"
       end 
-      js_events += "]},"
+      js_events = js_events.chomp(',') + "]},"
     end
-    js_events += "]"
+    js_events = js_events.chomp(',') + "]"
   end
   
   # And prepare translations for labels
index 840ae49a3bb8495ae53740ed2850abbdf12f21ee..5590d9387e9d6a8b9c3fc7e2a84762e3c9361bd2 100755 (executable)
@@ -41,10 +41,10 @@ SonarWidgets.Timeline.prototype.render = function() {
        var snapshots = this.wSnapshots;
        var translations = this.wTranslations;
        var events = this.wEvents;
-       var widgetDiv = document.getElementById(this.wDivId);
        
+       var widgetDiv = document.getElementById(this.wDivId);
        var footerFont = "10.5px Arial,Helvetica,sans-serif";
-       var show_y_axis = (data.length==1)
+       var show_y_axis = (trendData.size()==1)
        
        /* Sizing and scales. */
        var headerHeight = 4 + Math.max(this.wMetrics.size(), events ? 2 : 1) * 18;
@@ -52,10 +52,10 @@ SonarWidgets.Timeline.prototype.render = function() {
        var     h = (this.wHeight == null ? 80 : this.wHeight) + headerHeight;
        var yMaxHeight = h-headerHeight;
 
-       var x = pv.Scale.linear(pv.blend(pv.map(data, function(d) {return d;})), function(d) {return d.x}).range(0, w);
-       var y = new Array(data.length);
-       for(var i = 0; i < data.length; i++){
-               y[i]=pv.Scale.linear(data[i], function(d) {return d.y;}).range(20, yMaxHeight);
+       var x = pv.Scale.linear(pv.blend(pv.map(trendData, function(d) {return d;})), function(d) {return d.x}).range(0, w);
+       var y = new Array(trendData.size());
+       for(var i = 0; i < trendData.size(); i++){
+               y[i]=pv.Scale.linear(trendData[i], function(d) {return d.y;}).range(20, yMaxHeight);
        }
        var interpolate = "linear"; /* cardinal or linear */
        var idx = this.wData[0].size() - 1;
@@ -154,7 +154,7 @@ SonarWidgets.Timeline.prototype.render = function() {
                })
                .event("mousemove", function() {
                        var mx = x.invert(vis.mouse().x);
-                       idx = pv.search(data[0].map(function(d) {return d.x;}), mx);
+                       idx = pv.search(trendData[0].map(function(d) {return d.x;}), mx);
                        idx = idx < 0 ? (-idx - 2) : idx;
                        idx = idx < 0 ? 0 : idx;
                        return vis;