</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}} {{/if}}</pre>
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);
});
}
});
'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'
};
},
if (this.model.has('filterLinesFunc')) {
this.filterLines(this.model.get('filterLinesFunc'));
}
+ this.$('[data-toggle="tooltip"]').tooltip({ container: 'body' });
},
onClose: function () {
return view.close();
});
this.issueViews = [];
+ this.clearTooltips();
+ },
+
+ clearTooltips: function () {
+ this.$('[data-toggle="tooltip"]').tooltip('destroy');
},
onLoaded: function () {
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');
});
},
- 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');
}
});
.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%);
.source-line-coverage,
.source-line-duplications,
.source-line-duplications-extra,
+ .source-line-filtered-container,
.source-line-scm {
border-color: #fdf190 !important;
background-color: #fdf190;
}
.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;
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>
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}.
#------------------------------------------------------------------------------