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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
define [
'backbone.marionette'
'templates/component-viewer'
'component-viewer/header/base-header'
'component-viewer/time-changes-popup'
], (
Marionette
Templates
BaseHeaderView
TimeChangesPopupView
) ->
$ = jQuery
class extends BaseHeaderView
template: Templates['cw-issues-header']
events:
'click .js-issues-bulk-change': 'issuesBulkChange'
'click .js-issues-time-changes': 'issuesTimeChanges'
'click .js-filter-current-issue': 'filterByCurrentIssue'
'click .js-filter-all-issues': 'filterByAllIssues'
'click .js-filter-rule': 'filterByRule'
'click .js-filter-fixed-issues': 'filterByFixedIssues'
'click .js-filter-unresolved-issues': 'filterByUnresolvedIssues'
'click .js-filter-false-positive-issues': 'filterByFalsePositiveIssues'
'click .js-filter-open-issues': 'filterByOpenIssues'
'click .js-filter-BLOCKER-issues': 'filterByBlockerIssues'
'click .js-filter-CRITICAL-issues': 'filterByCriticalIssues'
'click .js-filter-MAJOR-issues': 'filterByMajorIssues'
'click .js-filter-MINOR-issues': 'filterByMinorIssues'
'click .js-filter-INFO-issues': 'filterByInfoIssues'
initialize: (options) ->
super
window.onBulkIssues = =>
$('#modal').dialog 'close'
options.main.requestIssues(options.main.key).done ->
options.main.render()
issuesBulkChange: ->
issues = @source.get('activeIssues')?.map (issue) -> issue.key
if issues.length > 0
url = "#{baseUrl}/issues/bulk_change_form?issues=#{issues.join()}"
openModalWindow url, {}
issuesTimeChanges: (e) ->
e.stopPropagation()
$('body').click()
popup = new TimeChangesPopupView
triggerEl: $(e.currentTarget)
main: @options.main
bottom: true
prefix: t 'component_viewer.added'
popup.render()
popup.on 'change', (period) => @main.enablePeriod period, '.js-filter-unresolved-issues'
filterByCurrentIssue: (e) ->
@header.filterLines e, 'filterByCurrentIssue'
@state.set 'activeHeaderItem', '.js-filter-current-issues'
filterByAllIssues: (e) ->
@header.filterLines e, 'filterByAllIssues'
@state.set 'activeHeaderItem', '.js-filter-all-issues'
filterByFixedIssues: (e) ->
@header.filterLines e, 'filterByFixedIssues'
@state.set 'activeHeaderItem', '.js-filter-fixed-issues'
filterByUnresolvedIssues: (e) ->
@header.filterLines e, 'filterByUnresolvedIssues'
@state.set 'activeHeaderItem', '.js-filter-unresolved-issues'
filterByFalsePositiveIssues: (e) ->
@header.filterLines e, 'filterByFalsePositiveIssues'
@state.set 'activeHeaderItem', '.js-filter-false-positive-issues'
filterByOpenIssues: (e) ->
@header.filterLines e, 'filterByOpenIssues'
@state.set 'activeHeaderItem', '.js-filter-open-issues'
filterByRule: (e) ->
rule = $(e.currentTarget).data 'rule'
@header.filterLines e, 'filterByRule', rule
@state.set 'activeHeaderItem', ".js-filter-rule[data-rule='#{rule}']"
filterByBlockerIssues: (e) ->
@header.filterLines e, 'filterByBlockerIssues'
@state.set 'activeHeaderItem', '.js-filter-BLOCKER-issues'
filterByCriticalIssues: (e) ->
@header.filterLines e, 'filterByCriticalIssues'
@state.set 'activeHeaderItem', '.js-filter-CRITICAL-issues'
filterByMajorIssues: (e) ->
@header.filterLines e, 'filterByMajorIssues'
@state.set 'activeHeaderItem', '.js-filter-MAJOR-issues'
filterByMinorIssues: (e) ->
@header.filterLines e, 'filterByMinorIssues'
@state.set 'activeHeaderItem', '.js-filter-MINOR-issues'
filterByInfoIssues: (e) ->
@header.filterLines e, 'filterByInfoIssues'
@state.set 'activeHeaderItem', '.js-filter-INFO-issues'
serializeData: ->
_.extend super,
period: @state.get('period')?.toJSON()
hasIssues: @state.get('severities')?.length || @state.get('rules')?.length
|