1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
/*
* SonarQube
* Copyright (C) 2009-2016 SonarSource SA
* mailto:contact AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import $ from 'jquery';
import _ from 'underscore';
import Marionette from 'backbone.marionette';
import MoreActionsView from './more-actions';
import MeasuresOverlay from './measures-overlay';
import Template from './templates/source-viewer-header.hbs';
const API_FAVORITE = window.baseUrl + '/api/favourites';
export default Marionette.ItemView.extend({
template: Template,
events () {
return {
'click .js-favorite': 'toggleFavorite',
'click .js-actions': 'showMoreActions',
'click .js-permalink': 'getPermalink'
};
},
toggleFavorite () {
const that = this;
if (this.model.get('fav')) {
$.ajax({
url: API_FAVORITE + '/' + this.model.get('key'),
type: 'DELETE'
}).done(function () {
that.model.set('fav', false);
that.render();
});
} else {
$.ajax({
url: API_FAVORITE,
type: 'POST',
data: {
key: this.model.get('key')
}
}).done(function () {
that.model.set('fav', true);
that.render();
});
}
},
showMoreActions (e) {
e.stopPropagation();
$('body').click();
const view = new MoreActionsView({ parent: this });
view.render().$el.appendTo(this.$el);
},
getPermalink () {
let query = 'id=' + encodeURIComponent(this.model.get('key'));
const windowParams = 'resizable=1,scrollbars=1,status=1';
if (this.options.viewer.highlightedLine) {
query = query + '&line=' + this.options.viewer.highlightedLine;
}
window.open(window.baseUrl + '/component/index?' + query, this.model.get('name'), windowParams);
},
showRawSources () {
const url = window.baseUrl + '/api/sources/raw?key=' + encodeURIComponent(this.model.get('key'));
const windowParams = 'resizable=1,scrollbars=1,status=1';
window.open(url, this.model.get('name'), windowParams);
},
showMeasures () {
new MeasuresOverlay({
model: this.model,
large: true
}).render();
},
serializeData () {
return _.extend(Marionette.ItemView.prototype.serializeData.apply(this, arguments), {
path: this.model.get('path') || this.model.get('longName')
});
}
});
|