]> source.dussan.org Git - sonarqube.git/commitdiff
Add tooltips for source markers
authorStas Vilchik <vilchiks@gmail.com>
Tue, 17 Feb 2015 12:21:22 +0000 (13:21 +0100)
committerStas Vilchik <vilchiks@gmail.com>
Tue, 17 Feb 2015 12:21:31 +0000 (13:21 +0100)
server/sonar-web/src/main/hbs/source-viewer/source-viewer.hbs
server/sonar-web/src/main/js/drilldown/app.js
server/sonar-web/src/main/js/source-viewer/viewer.js
server/sonar-web/src/main/less/components/source.less
server/sonar-web/src/main/webapp/WEB-INF/app/views/drilldown/measures.html.erb
sonar-core/src/main/resources/org/sonar/l10n/core.properties

index 6a73836e5a34965aed09e49b47bd75ebe678fca1..3442a329895b58b45f998422ca9e4366a44e9661 100644 (file)
         </td>
 
         <td class="source-meta source-line-coverage {{#notNull coverageStatus}}source-line-{{coverageStatus}}{{/notNull}}"
-            data-line-number="{{line}}">
+            data-line-number="{{line}}" {{#notNull coverageStatus}}title="{{t 'source_viewer.tooltip' coverageStatus}}" data-placement="right" data-toggle="tooltip"{{/notNull}}>
           <div class="source-line-bar"></div>
         </td>
 
         {{#if ../hasDuplications}}
           <td class="source-meta source-line-duplications {{#if duplicated}}source-line-duplicated{{/if}}"
-              title="{{t 'source_viewer.expand_duplications'}}">
+              {{#if duplicated}}title="{{t 'source_viewer.tooltip.duplicated_line'}}" data-placement="right" data-toggle="tooltip"{{/if}}>
             <div class="source-line-bar"></div>
           </td>
 
           {{#each duplications}}
             <td class="source-meta source-line-duplications-extra {{#if this}}source-line-duplicated{{/if}}"
-                data-index="{{this}}" data-line-number="{{line}}">
+                data-index="{{this}}" data-line-number="{{line}}"
+                {{#if this}}title="{{t 'source_viewer.tooltip.duplicated_block'}}" data-placement="right" data-toggle="tooltip"{{/if}}>
               <div class="source-line-bar"></div>
             </td>
           {{/each}}
           {{/withFirst}}
         </td>
 
+        <td class="source-meta source-line-filtered-container" data-line-number="{{line}}">
+          <div class="source-line-bar"></div>
+        </td>
+
         <td class="source-line-code code {{#notEmpty issues}}has-issues{{/notEmpty}}" data-line-number="{{line}}">
           {{#notNull code}}
             <pre>{{#if code}}{{{code}}}{{else}}&nbsp;{{/if}}</pre>
index 45ebac66d201aa1aaf70cce798d2352372039b05..85be33f8b90f430ee62ce7e4b370ee202c36bcd1 100644 (file)
@@ -24,7 +24,7 @@ requirejs([
       viewer.open(uuid);
       if (window.drilldown.period != null) {
         viewer.on('loaded', function () {
-          viewer.filterLinesByDate(window.drilldown.period);
+          viewer.filterLinesByDate(window.drilldown.period, window.drilldown.periodName);
         });
       }
     });
index a8ee471090dd4458e15ba1306b155308f6cb047a..c86bb2e0d984978ec27abe7bc4dd22af6a774c88 100644 (file)
@@ -51,7 +51,9 @@ define([
             'click .source-line-duplications': 'showDuplications',
             'click .source-line-duplications-extra': 'showDuplicationPopup',
             'click .source-line-with-issues': 'onLineIssuesClick',
-            'click .source-line-number[data-line-number]': 'onLineNumberClick'
+            'click .source-line-number[data-line-number]': 'onLineNumberClick',
+            'mouseenter .source-line-filtered .source-line-filtered-container': 'showFilteredTooltip',
+            'mouseleave .source-line-filtered .source-line-filtered-container': 'hideFilteredTooltip'
           };
         },
 
@@ -82,6 +84,7 @@ define([
           if (this.model.has('filterLinesFunc')) {
             this.filterLines(this.model.get('filterLinesFunc'));
           }
+          this.$('[data-toggle="tooltip"]').tooltip({ container: 'body' });
         },
 
         onClose: function () {
@@ -89,6 +92,11 @@ define([
             return view.close();
           });
           this.issueViews = [];
+          this.clearTooltips();
+        },
+
+        clearTooltips: function () {
+          this.$('[data-toggle="tooltip"]').tooltip('destroy');
         },
 
         onLoaded: function () {
@@ -361,6 +369,7 @@ define([
         showDuplications: function (e) {
           var that = this,
               lineNumber = $(e.currentTarget).closest('.source-line').data('line-number');
+          this.clearTooltips();
           this.requestDuplications().done(function () {
             that.render();
             that.$el.addClass('source-duplications-expanded');
@@ -620,12 +629,26 @@ define([
           });
         },
 
-        filterLinesByDate: function (date) {
+        filterLinesByDate: function (date, label) {
           var sinceDate = moment(date).toDate();
+          this.sinceLabel = label;
           this.filterLines(function (line) {
             var scmDate = moment(line.scmDate).toDate();
             return scmDate >= sinceDate;
           });
+        },
+
+        showFilteredTooltip: function (e) {
+          $(e.currentTarget).tooltip({
+            container: 'body',
+            placement: 'right',
+            title: tp('source_viewer.tooltip.new_code', this.sinceLabel),
+            trigger: 'manual'
+          }).tooltip('show');
+        },
+
+        hideFilteredTooltip: function (e) {
+          $(e.currentTarget).tooltip('destroy');
         }
       });
 
index 361634ac603d0d8a72b30360d6282a1eb3ebff26..bce28e3441a9f5ba9cc36eb32a81ef2cdfdbce1e 100644 (file)
@@ -26,6 +26,7 @@
   .source-line-coverage,
   .source-line-duplications,
   .source-line-duplications-extra,
+  .source-line-filtered-container,
   .source-line-scm {
     border-color: darken(@barBackgroundColor, 4%);
     background-color: darken(@barBackgroundColor, 4%);
@@ -43,6 +44,7 @@
   .source-line-coverage,
   .source-line-duplications,
   .source-line-duplications-extra,
+  .source-line-filtered-container,
   .source-line-scm {
     border-color: #fdf190 !important;
     background-color: #fdf190;
@@ -60,9 +62,8 @@
 }
 
 .source-line-filtered {
-  .source-line-code {
-    border-left: 4px solid @lightBlue;
-    padding-left: 6px;
+  .source-line-filtered-container {
+    background-color: @lightBlue !important;
   }
 }
 
   }
 }
 
+.source-line-filtered-container {
+  background-color: @barBackgroundColor;
+}
+
 .source-line-scm {
   padding: 0 5px;
   background-color: @barBackgroundColor;
index eaf925d5c441edef8b0f63beb231a0d9d9441f29..24864f5bcf557fccea8857977b7ebfee553f19d1 100644 (file)
       metric: <% if @metric %>'<%= @metric.key -%>'<% else %>null<% end %>,
       rule: null,
       severity: null,
-      period: <% if @period %>'<%= @snapshot.period_datetime(@period) -%>'<% else %>null<% end %>
+      period: <% if @period %>'<%= @snapshot.period_datetime(@period) -%>'<% else %>null<% end %>,
+      periodName: <% if @period %>'<%= period_label(@snapshot, @period) -%>'<% else %>null<% end %>,
     };
   </script>
 
index cd2218dda4a2c5e19bbdf8bad6b45aa81725ea9f..da7e723748a35273cd3d10fddefff95daf3c4fe6 100644 (file)
@@ -2883,7 +2883,13 @@ component_viewer.workspace.hide_workspace=Hide workspace
 source_viewer.covered=Covered
 source_viewer.not_covered=Not covered
 source_viewer.conditions=conditions
-source_viewer.expand_duplications=Click to display more in details all the duplicated blocks of this file
+
+source_viewer.tooltip.duplicated_line=This line is duplicated. Click to see duplicated blocks.
+source_viewer.tooltip.duplicated_block=Duplicated block. Click for details.
+source_viewer.tooltip.covered=Fully covered by tests. Click for details.
+source_viewer.tooltip.partially-covered=Partially covered by tests. Click for details.
+source_viewer.tooltip.uncovered=Not covered by tests.
+source_viewer.tooltip.new_code=New {0}.
 
 
 #------------------------------------------------------------------------------