blob: 23c899f185fda465fac3aaade1326a23c01e9fce (
plain)
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
|
define [], () ->
$ = jQuery
API_SCM = "#{baseUrl}/api/sources/scm"
class SCMMixin
requestSCM: (key) ->
$.get API_SCM, key: key, (data) =>
if data?.scm?
@state.set 'hasSCM', true
@source.set scm: data.scm
@augmentWithSCM data.scm
augmentWithSCM: (scm) ->
formattedSource = @source.get 'formattedSource'
scmLength = scm.length
if scmLength > 0
scmIndex = 0
scmCurrent = scm[scmIndex]
scmDetails = {}
formattedSource.forEach (line) ->
if line.lineNumber == scmCurrent[0]
scmDetails = author: scmCurrent[1], date: scmCurrent[2]
if scmIndex < scmLength - 1
scmIndex++
scmCurrent = scm[scmIndex]
line.scm = scmDetails
@source.set 'formattedSource', formattedSource
showSCM: (store = false) ->
@settings.set 'scm', true
@storeSettings() if store
unless @state.get 'hasSCM'
@requestSCM(@key).done => @sourceView.render()
else
@sourceView.render()
hideSCM: (store = false) ->
@settings.set 'scm', false
@storeSettings() if store
@sourceView.render()
filterBySCM: ->
requests = [@requestSCM(@key)]
if @settings.get('issues') && !@state.get('hasIssues')
requests.push @requestIssues @key
$.when.apply($, requests).done =>
@_filterBySCM()
_filterBySCM: () ->
formattedSource = @source.get 'formattedSource'
period = @state.get 'period'
unless period?
return @showAllLines()
else
periodDate = period.get 'sinceDate'
@settings.set 'scm', true
@sourceView.resetShowBlocks()
scmBlockLine = 1
predicate = false
formattedSource.forEach (line) =>
scmBlockDate = new Date line.scm.date
if scmBlockDate >= periodDate
scmBlockLine = line.lineNumber if predicate == false
predicate = true
else if predicate == true
predicate = false
@sourceView.addShowBlock scmBlockLine, line.lineNumber - 1
if predicate
@sourceView.addShowBlock scmBlockLine, _.size @source.get 'source'
@sourceView.render()
|