hubstats 0.3.8 → 0.3.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/CHANGELOG.markdown +9 -0
- data/app/assets/javascripts/hubstats/bootstrap.js +38 -38
- data/app/assets/javascripts/hubstats/users.js +10 -5
- data/app/controllers/hubstats/application_controller.rb +0 -1
- data/app/controllers/hubstats/base_controller.rb +13 -0
- data/app/controllers/hubstats/deploys_controller.rb +26 -49
- data/app/controllers/hubstats/pull_requests_controller.rb +10 -14
- data/app/controllers/hubstats/repos_controller.rb +46 -24
- data/app/controllers/hubstats/users_controller.rb +24 -12
- data/app/models/hubstats/deploy.rb +36 -0
- data/app/models/hubstats/pull_request.rb +2 -2
- data/app/models/hubstats/repo.rb +63 -1
- data/app/models/hubstats/user.rb +29 -26
- data/app/views/hubstats/partials/_deploy-condensed.html.erb +1 -0
- data/app/views/hubstats/partials/_deploy.html.erb +1 -1
- data/app/views/hubstats/partials/_pull-condensed.html.erb +2 -1
- data/app/views/hubstats/partials/_pull.html.erb +1 -1
- data/app/views/hubstats/partials/_quick_addition_stats.html.erb +14 -2
- data/app/views/hubstats/partials/_quick_stats.html.erb +24 -12
- data/app/views/hubstats/partials/_repo.html.erb +37 -8
- data/app/views/hubstats/partials/_user.html.erb +1 -14
- data/app/views/hubstats/repos/dashboard.html.erb +1 -1
- data/app/views/hubstats/repos/show.html.erb +2 -9
- data/app/views/hubstats/tables/_repos.html.erb +19 -0
- data/app/views/hubstats/tables/_users.html.erb +1 -7
- data/app/views/hubstats/users/show.html.erb +3 -5
- data/config/routes.rb +8 -8
- data/lib/hubstats/github_api.rb +8 -6
- data/lib/hubstats/version.rb +1 -1
- data/spec/controllers/hubstats/deploys_controller_spec.rb +43 -47
- data/spec/controllers/hubstats/pull_requests_controller_spec.rb +41 -2
- data/spec/controllers/hubstats/repos_controller_spec.rb +62 -2
- data/spec/controllers/hubstats/users_controller_spec.rb +30 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZDllYTczYjQ4OTgxNTcxNTIxNjBhMWM2MTRiYWNlNDlmMDBmOGQ3OA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NmRmMTc1NDQ3YWNlODkzYjY0MWVmMGI3YjgyNTVjODg1OTc5NmZlZg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
Y2UzZWIxMGI0NGMzYWI4ODFiOWM3YTg5M2MwM2YxMDhhZTg5NDRiY2E5NDJm
|
10
|
+
ZDYyMTI1MDk5NTljMzAzZDVjYzIxYWZhYWM5MTQ2OGQzNDQ5MDgxOWM4MzJk
|
11
|
+
N2I4OTEyMmY0N2IzN2M1OWFiYzM1ZDI4ZjE5M2MyODc0ZGM2NGM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YTFmZmI2ZjQ5NjU5MjA3ZjE5M2Q5NWVjYzlkMjY2N2JiOTk4YTIxMTQ0NjEw
|
14
|
+
Njc5YjI2ZTM0NGI4ZjI2NmE3NGU5Mzg3OTA4NjU0YjU5Mzg4NmM3MzYyNTc5
|
15
|
+
MzY3OGUwYTc2YmRlYzcyNjM5ZmExNmViZTVjZWM2MmM3MzFjODI=
|
data/CHANGELOG.markdown
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
#### v0.3.9
|
2
|
+
* Refactored Main Parts of Code
|
3
|
+
|
4
|
+
> Emma Sax: Brian Bergstrom: https://github.com/sportngin/hubstats/pull/57
|
5
|
+
|
6
|
+
* Changed Metrics Page, Wrote New Tests, Fixed Little Bugs
|
7
|
+
|
8
|
+
> Emma Sax: Brian Bergstrom: https://github.com/sportngin/hubstats/pull/56
|
9
|
+
|
1
10
|
#### v0.3.8
|
2
11
|
#### v0.3.7
|
3
12
|
#### v0.3.6
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5
5
|
*/
|
6
6
|
|
7
|
-
if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript requires jQuery') }
|
7
|
+
if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript requires jQuery') };
|
8
8
|
|
9
9
|
/* ========================================================================
|
10
10
|
* Bootstrap: transition.js v3.1.1
|
@@ -22,32 +22,32 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
22
22
|
// ============================================================
|
23
23
|
|
24
24
|
function transitionEnd() {
|
25
|
-
var el = document.createElement('bootstrap')
|
25
|
+
var el = document.createElement('bootstrap');
|
26
26
|
|
27
27
|
var transEndEventNames = {
|
28
28
|
'WebkitTransition' : 'webkitTransitionEnd',
|
29
29
|
'MozTransition' : 'transitionend',
|
30
30
|
'OTransition' : 'oTransitionEnd otransitionend',
|
31
31
|
'transition' : 'transitionend'
|
32
|
-
}
|
32
|
+
};
|
33
33
|
|
34
34
|
for (var name in transEndEventNames) {
|
35
35
|
if (el.style[name] !== undefined) {
|
36
|
-
return { end: transEndEventNames[name] }
|
36
|
+
return { end: transEndEventNames[name] };
|
37
37
|
}
|
38
38
|
}
|
39
39
|
|
40
|
-
return false // explicit for ie8 ( ._.)
|
40
|
+
return false; // explicit for ie8 ( ._.)
|
41
41
|
}
|
42
42
|
|
43
43
|
// http://blog.alexmaccaw.com/css-transitions
|
44
44
|
$.fn.emulateTransitionEnd = function (duration) {
|
45
|
-
var called = false, $el = this
|
45
|
+
var called = false, $el = this;
|
46
46
|
$(this).one($.support.transition.end, function () { called = true })
|
47
|
-
var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
|
48
|
-
setTimeout(callback, duration)
|
49
|
-
return this
|
50
|
-
}
|
47
|
+
var callback = function () { if (!called) {$($el).trigger($.support.transition.end)} };
|
48
|
+
setTimeout(callback, duration);
|
49
|
+
return this;
|
50
|
+
};
|
51
51
|
|
52
52
|
$(function () {
|
53
53
|
$.support.transition = transitionEnd()
|
@@ -70,71 +70,71 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
70
70
|
// ALERT CLASS DEFINITION
|
71
71
|
// ======================
|
72
72
|
|
73
|
-
var dismiss = '[data-dismiss="alert"]'
|
73
|
+
var dismiss = '[data-dismiss="alert"]';
|
74
74
|
var Alert = function (el) {
|
75
|
-
$(el).on('click', dismiss, this.close)
|
76
|
-
}
|
75
|
+
$(el).on('click', dismiss, this.close);
|
76
|
+
};
|
77
77
|
|
78
78
|
Alert.prototype.close = function (e) {
|
79
|
-
var $this = $(this)
|
80
|
-
var selector = $this.attr('data-target')
|
79
|
+
var $this = $(this);
|
80
|
+
var selector = $this.attr('data-target');
|
81
81
|
|
82
82
|
if (!selector) {
|
83
|
-
selector = $this.attr('href')
|
84
|
-
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
|
85
|
-
}
|
83
|
+
selector = $this.attr('href');
|
84
|
+
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, ''); // strip for ie7
|
85
|
+
};
|
86
86
|
|
87
|
-
var $parent = $(selector)
|
87
|
+
var $parent = $(selector);
|
88
88
|
|
89
|
-
if (e) e.preventDefault()
|
89
|
+
if (e) {e.preventDefault()};
|
90
90
|
|
91
91
|
if (!$parent.length) {
|
92
|
-
$parent = $this.hasClass('alert') ? $this : $this.parent()
|
93
|
-
}
|
92
|
+
$parent = $this.hasClass('alert') ? $this : $this.parent();
|
93
|
+
};
|
94
94
|
|
95
|
-
$parent.trigger(e = $.Event('close.bs.alert'))
|
95
|
+
$parent.trigger(e = $.Event('close.bs.alert'));
|
96
96
|
|
97
97
|
if (e.isDefaultPrevented()) return
|
98
98
|
|
99
99
|
$parent.removeClass('in')
|
100
100
|
|
101
101
|
function removeElement() {
|
102
|
-
$parent.trigger('closed.bs.alert').remove()
|
103
|
-
}
|
102
|
+
$parent.trigger('closed.bs.alert').remove();
|
103
|
+
};
|
104
104
|
|
105
105
|
$.support.transition && $parent.hasClass('fade') ?
|
106
106
|
$parent
|
107
107
|
.one($.support.transition.end, removeElement)
|
108
108
|
.emulateTransitionEnd(150) :
|
109
|
-
removeElement()
|
110
|
-
}
|
109
|
+
removeElement();
|
110
|
+
};
|
111
111
|
|
112
112
|
|
113
113
|
// ALERT PLUGIN DEFINITION
|
114
114
|
// =======================
|
115
115
|
|
116
|
-
var old = $.fn.alert
|
116
|
+
var old = $.fn.alert;
|
117
117
|
|
118
118
|
$.fn.alert = function (option) {
|
119
119
|
return this.each(function () {
|
120
|
-
var $this = $(this)
|
121
|
-
var data = $this.data('bs.alert')
|
120
|
+
var $this = $(this);
|
121
|
+
var data = $this.data('bs.alert');
|
122
122
|
|
123
|
-
if (!data) $this.data('bs.alert', (data = new Alert(this)))
|
124
|
-
if (typeof option
|
125
|
-
})
|
126
|
-
}
|
123
|
+
if (!data) $this.data('bs.alert', (data = new Alert(this)));
|
124
|
+
if (typeof option === 'string') {data[option].call($this)};
|
125
|
+
});
|
126
|
+
};
|
127
127
|
|
128
|
-
$.fn.alert.Constructor = Alert
|
128
|
+
$.fn.alert.Constructor = Alert;
|
129
129
|
|
130
130
|
|
131
131
|
// ALERT NO CONFLICT
|
132
132
|
// =================
|
133
133
|
|
134
134
|
$.fn.alert.noConflict = function () {
|
135
|
-
$.fn.alert = old
|
136
|
-
return this
|
137
|
-
}
|
135
|
+
$.fn.alert = old;
|
136
|
+
return this;
|
137
|
+
};
|
138
138
|
|
139
139
|
|
140
140
|
// ALERT DATA-API
|
@@ -17,6 +17,11 @@ $(document).ready(function() {
|
|
17
17
|
toggleOrder(queryParameters,$(this).attr('id'));
|
18
18
|
});
|
19
19
|
|
20
|
+
// No longer using additions and deletions, but instead using net additions
|
21
|
+
$("#netadditions").on("click", function(){
|
22
|
+
toggleOrder(queryParameters,$(this).attr('id'));
|
23
|
+
});
|
24
|
+
|
20
25
|
$("#additions").on("click", function(){
|
21
26
|
toggleOrder(queryParameters,$(this).attr('id'));
|
22
27
|
});
|
@@ -27,14 +32,14 @@ $(document).ready(function() {
|
|
27
32
|
});
|
28
33
|
|
29
34
|
function toggleOrder(queryParams, sort_by) {
|
30
|
-
if (
|
31
|
-
if (
|
32
|
-
updateQueryStringParameter(
|
35
|
+
if (queryParams["order"] !== undefined) {
|
36
|
+
if (queryParams["order"] === sort_by+"-desc" ) {
|
37
|
+
updateQueryStringParameter(queryParams,"order",sort_by+"-asc");
|
33
38
|
} else {
|
34
|
-
updateQueryStringParameter(
|
39
|
+
updateQueryStringParameter(queryParams,"order",sort_by+"-desc");
|
35
40
|
}
|
36
41
|
} else {
|
37
|
-
updateQueryStringParameter(
|
42
|
+
updateQueryStringParameter(queryParams,"order",sort_by+"-asc");
|
38
43
|
}
|
39
44
|
}
|
40
45
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_dependency "hubstats/application_controller"
|
2
|
+
|
3
|
+
module Hubstats
|
4
|
+
class BaseController < Hubstats::ApplicationController
|
5
|
+
def grouping (group_request, group)
|
6
|
+
if group_request == "user"
|
7
|
+
@groups = group.to_a.group_by(&:user_name)
|
8
|
+
elsif group_request == "repo"
|
9
|
+
@groups = group.to_a.group_by(&:repo_name)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require_dependency "hubstats/application_controller"
|
2
2
|
|
3
3
|
module Hubstats
|
4
|
-
class DeploysController <
|
4
|
+
class DeploysController < Hubstats::BaseController
|
5
5
|
|
6
6
|
def index
|
7
7
|
# sets to include user and repo, and sorts data
|
@@ -11,55 +11,24 @@ module Hubstats
|
|
11
11
|
.order_with_timespan(@timespan, params[:order])
|
12
12
|
.paginate(:page => params[:page], :per_page => 15)
|
13
13
|
|
14
|
-
|
15
|
-
if params[:group] == "user"
|
16
|
-
@groups = @deploys.to_a.group_by(&:user_name)
|
17
|
-
elsif params[:group] == "repo"
|
18
|
-
@groups = @deploys.to_a.group_by(&:repo_name)
|
19
|
-
end
|
14
|
+
grouping(params[:group], @deploys)
|
20
15
|
end
|
21
16
|
|
22
17
|
# show basic stats and pull requests from a single deploy
|
23
18
|
def show
|
24
|
-
@deploy = Hubstats::Deploy.includes(:repo
|
19
|
+
@deploy = Hubstats::Deploy.includes(:repo, :pull_requests).find(params[:id])
|
25
20
|
repo = @deploy.repo
|
26
21
|
@pull_requests = @deploy.pull_requests
|
27
22
|
pull_request_count = @pull_requests.length
|
28
|
-
net_additions = find_net_additions(@deploy.id)
|
29
|
-
comment_count = find_comment_count(@deploy.id)
|
30
23
|
@stats_basics = {
|
31
24
|
pull_count: pull_request_count,
|
32
|
-
net_additions:
|
33
|
-
comment_count:
|
25
|
+
net_additions: @deploy.find_net_additions,
|
26
|
+
comment_count: @deploy.find_comment_count,
|
27
|
+
additions: @deploy.total_changes(:additions),
|
28
|
+
deletions: @deploy.total_changes(:deletions)
|
34
29
|
}
|
35
30
|
end
|
36
31
|
|
37
|
-
# finds all of the additions and deletions in all pull requests and then makes the net additions
|
38
|
-
def find_net_additions(deploy_id)
|
39
|
-
deploy = Hubstats::Deploy.find(deploy_id)
|
40
|
-
pull_requests = deploy.pull_requests
|
41
|
-
total_additions = 0
|
42
|
-
total_deletions = 0
|
43
|
-
pull_requests.each do |pull|
|
44
|
-
total_additions += pull.additions.to_i
|
45
|
-
total_deletions += pull.deletions.to_i
|
46
|
-
end
|
47
|
-
return total_additions - total_deletions
|
48
|
-
end
|
49
|
-
|
50
|
-
# returns the total amount of comments from all pull requests in a deploy
|
51
|
-
def find_comment_count(deploy_id)
|
52
|
-
deploy = Hubstats::Deploy.find(deploy_id)
|
53
|
-
pull_requests = deploy.pull_requests
|
54
|
-
total_comments = 0
|
55
|
-
pull_requests.each do |pull|
|
56
|
-
if pull.comments
|
57
|
-
total_comments += Hubstats::Comment.belonging_to_pull_request(pull.id).includes(:user).created_since(@timespan).count(:all)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
return total_comments
|
61
|
-
end
|
62
|
-
|
63
32
|
# make a new deploy with all of the correct attributes
|
64
33
|
def create
|
65
34
|
if params[:git_revision].nil? || params[:repo_name].nil? || params[:pull_request_ids].nil?
|
@@ -69,29 +38,22 @@ module Hubstats
|
|
69
38
|
@deploy.deployed_at = params[:deployed_at]
|
70
39
|
@deploy.git_revision = params[:git_revision]
|
71
40
|
@repo = Hubstats::Repo.where(full_name: params[:repo_name])
|
72
|
-
|
73
|
-
|
74
|
-
if @repo.empty?
|
41
|
+
|
42
|
+
if !valid_repo(@repo)
|
75
43
|
render text: "Repository name is invalid.", :status => 400 and return
|
76
44
|
else
|
77
45
|
@deploy.repo_id = @repo.first.id.to_i
|
78
46
|
end
|
79
47
|
|
80
|
-
# Check before assigning the pull requests
|
81
48
|
@pull_request_id_array = params[:pull_request_ids].split(",").map {|i| i.strip.to_i}
|
82
|
-
if
|
49
|
+
if !valid_pr_ids
|
83
50
|
render text: "No pull request ids given.", :status => 400 and return
|
84
51
|
else
|
85
52
|
@deploy.pull_requests = Hubstats::PullRequest.where(repo_id: @deploy.repo_id).where(number: @pull_request_id_array)
|
86
53
|
end
|
87
54
|
|
88
|
-
|
89
|
-
if @deploy.pull_requests.first.nil?
|
55
|
+
if !valid_pulls
|
90
56
|
render text: "Pull requests not valid", :status => 400 and return
|
91
|
-
else
|
92
|
-
if @deploy.pull_requests.first.merged_by
|
93
|
-
@deploy.user_id = @deploy.pull_requests.first.merged_by
|
94
|
-
end
|
95
57
|
end
|
96
58
|
|
97
59
|
if @deploy.save
|
@@ -101,5 +63,20 @@ module Hubstats
|
|
101
63
|
end
|
102
64
|
end
|
103
65
|
end
|
66
|
+
|
67
|
+
def valid_repo(repo)
|
68
|
+
return !repo.empty?
|
69
|
+
end
|
70
|
+
|
71
|
+
def valid_pr_ids
|
72
|
+
return !@pull_request_id_array.empty? && @pull_request_id_array != [0]
|
73
|
+
end
|
74
|
+
|
75
|
+
def valid_pulls
|
76
|
+
pull = @deploy.pull_requests.first
|
77
|
+
return false if pull.nil? || pull.merged_by.nil?
|
78
|
+
@deploy.user_id = pull.merged_by
|
79
|
+
return true
|
80
|
+
end
|
104
81
|
end
|
105
82
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require_dependency "hubstats/application_controller"
|
2
2
|
|
3
3
|
module Hubstats
|
4
|
-
class PullRequestsController <
|
4
|
+
class PullRequestsController < Hubstats::BaseController
|
5
5
|
|
6
6
|
def index
|
7
7
|
URI.decode(params[:label]) if params[:label]
|
@@ -9,34 +9,30 @@ module Hubstats
|
|
9
9
|
pull_ids = Hubstats::PullRequest
|
10
10
|
.belonging_to_users(params[:users])
|
11
11
|
.belonging_to_repos(params[:repos])
|
12
|
-
.state_based_order(@timespan,params[:state],"ASC")
|
13
12
|
.map(&:id)
|
14
13
|
|
15
14
|
@labels = Hubstats::Label.with_a_pull_request(pull_ids).order("pull_request_count DESC")
|
16
15
|
|
17
|
-
@pull_requests = Hubstats::PullRequest.includes(:user
|
16
|
+
@pull_requests = Hubstats::PullRequest.includes(:user, :repo)
|
18
17
|
.belonging_to_users(params[:users]).belonging_to_repos(params[:repos])
|
19
18
|
.group_by(params[:group]).with_label(params[:label])
|
20
19
|
.state_based_order(@timespan,params[:state],params[:order])
|
21
20
|
.paginate(:page => params[:page], :per_page => 15)
|
22
21
|
|
23
|
-
|
24
|
-
@groups = @pull_requests.to_a.group_by(&:user_name)
|
25
|
-
elsif params[:group] == 'repo'
|
26
|
-
@groups = @pull_requests.to_a.group_by(&:repo_name)
|
27
|
-
end
|
28
|
-
|
22
|
+
grouping(params[:group], @pull_requests)
|
29
23
|
end
|
30
24
|
|
31
25
|
def show
|
32
26
|
@repo = Hubstats::Repo.where(name: params[:repo]).first
|
33
27
|
@pull_request = Hubstats::PullRequest.belonging_to_repo(@repo.id).where(id: params[:id]).first
|
34
|
-
@comments = Hubstats::Comment.belonging_to_pull_request(params[:id]).
|
35
|
-
|
36
|
-
@deploys = Hubstats::Deploy.where(id: @pull_request.deploy_id)
|
28
|
+
@comments = Hubstats::Comment.belonging_to_pull_request(params[:id]).created_since(@timespan).limit(20)
|
29
|
+
comment_count = Hubstats::Comment.belonging_to_pull_request(params[:id]).created_since(@timespan).count(:all)
|
30
|
+
@deploys = Hubstats::Deploy.where(id: @pull_request.deploy_id).order("deployed_at DESC")
|
37
31
|
@stats_basics = {
|
38
|
-
comment_count:
|
39
|
-
net_additions: @pull_request.additions.to_i - @pull_request.deletions.to_i
|
32
|
+
comment_count: comment_count,
|
33
|
+
net_additions: @pull_request.additions.to_i - @pull_request.deletions.to_i,
|
34
|
+
additions: @pull_request.additions.to_i,
|
35
|
+
deletions: @pull_request.deletions.to_i
|
40
36
|
}
|
41
37
|
end
|
42
38
|
|
@@ -19,40 +19,62 @@ module Hubstats
|
|
19
19
|
|
20
20
|
def show
|
21
21
|
@repo = Hubstats::Repo.where(name: params[:repo]).first
|
22
|
-
@pull_requests = Hubstats::PullRequest.belonging_to_repo(@repo.id).
|
23
|
-
@
|
24
|
-
@deploys = Hubstats::Deploy.belonging_to_repo(@repo.id).deployed_since(@timespan).limit(20)
|
25
|
-
@pull_count = Hubstats::PullRequest.belonging_to_repo(@repo.id).updated_since(@timespan).count(:all)
|
22
|
+
@pull_requests = Hubstats::PullRequest.belonging_to_repo(@repo.id).merged_since(@timespan).order("updated_at DESC").limit(20)
|
23
|
+
@pull_count = Hubstats::PullRequest.belonging_to_repo(@repo.id).merged_since(@timespan).count(:all)
|
24
|
+
@deploys = Hubstats::Deploy.belonging_to_repo(@repo.id).deployed_since(@timespan).order("deployed_at DESC").limit(20)
|
26
25
|
@deploy_count = Hubstats::Deploy.belonging_to_repo(@repo.id).deployed_since(@timespan).count(:all)
|
26
|
+
@comment_count = Hubstats::Comment.belonging_to_repo(@repo.id).created_since(@timespan).count(:all)
|
27
27
|
@user_count = Hubstats::User.with_pulls_or_comments(@timespan,@repo.id).only_active.length
|
28
|
-
@
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
@stats_additions = {
|
35
|
-
avg_additions: Hubstats::PullRequest.merged_since(@timespan).belonging_to_repo(@repo.id).average(:additions).to_i,
|
36
|
-
avg_deletions: Hubstats::PullRequest.merged_since(@timespan).belonging_to_repo(@repo.id).average(:deletions).to_i,
|
37
|
-
net_additions: Hubstats::PullRequest.merged_since(@timespan).belonging_to_repo(@repo.id).sum(:additions).to_i -
|
38
|
-
Hubstats::PullRequest.merged_since(@timespan).belonging_to_repo(@repo.id).sum(:deletions).to_i
|
39
|
-
}
|
28
|
+
@net_additions = Hubstats::PullRequest.belonging_to_repo(@repo.id).merged_since(@timespan).sum(:additions).to_i -
|
29
|
+
Hubstats::PullRequest.belonging_to_repo(@repo.id).merged_since(@timespan).sum(:deletions).to_i
|
30
|
+
@additions = Hubstats::PullRequest.belonging_to_repo(@repo.id).merged_since(@timespan).average(:additions)
|
31
|
+
@deletions = Hubstats::PullRequest.belonging_to_repo(@repo.id).merged_since(@timespan).average(:deletions)
|
32
|
+
|
33
|
+
stats
|
40
34
|
end
|
41
35
|
|
42
36
|
def dashboard
|
43
|
-
|
37
|
+
if params[:query] ## For select 2.
|
38
|
+
@repos = Hubstats::Repo.where("name LIKE ?", "%#{params[:query]}%").order("name ASC")
|
39
|
+
elsif params[:id]
|
40
|
+
@repos = Hubstats::Repo.where(id: params[:id].split(",")).order("name ASC")
|
41
|
+
else
|
42
|
+
@repos = Hubstats::Repo.with_all_metrics(@timespan)
|
43
|
+
.with_id(params[:repos])
|
44
|
+
.custom_order(params[:order])
|
45
|
+
.paginate(:page => params[:page], :per_page => 15)
|
46
|
+
end
|
47
|
+
|
44
48
|
@user_count = Hubstats::User.with_pulls_or_comments(@timespan).only_active.length
|
49
|
+
@deploy_count = Hubstats::Deploy.deployed_since(@timespan).count(:all)
|
50
|
+
@pull_count = Hubstats::PullRequest.merged_since(@timespan).count(:all)
|
51
|
+
@comment_count = Hubstats::Comment.created_since(@timespan).count(:all)
|
52
|
+
@net_additions = Hubstats::PullRequest.merged_since(@timespan).sum(:additions).to_i -
|
53
|
+
Hubstats::PullRequest.merged_since(@timespan).sum(:deletions).to_i
|
54
|
+
@additions = Hubstats::PullRequest.merged_since(@timespan).average(:additions)
|
55
|
+
@deletions = Hubstats::PullRequest.merged_since(@timespan).average(:deletions)
|
56
|
+
|
57
|
+
stats
|
58
|
+
|
59
|
+
respond_to do |format|
|
60
|
+
format.html
|
61
|
+
format.json { render :json => @repos}
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def stats
|
66
|
+
@additions ||= 0
|
67
|
+
@deletions ||= 0
|
45
68
|
@stats_basics = {
|
46
69
|
user_count: @user_count,
|
47
|
-
deploy_count:
|
48
|
-
pull_count:
|
49
|
-
comment_count:
|
70
|
+
deploy_count: @deploy_count,
|
71
|
+
pull_count: @pull_count,
|
72
|
+
comment_count: @comment_count
|
50
73
|
}
|
51
74
|
@stats_additions = {
|
52
|
-
avg_additions:
|
53
|
-
avg_deletions:
|
54
|
-
net_additions:
|
55
|
-
Hubstats::PullRequest.merged_since(@timespan).sum(:deletions).to_i
|
75
|
+
avg_additions: @additions.round.to_i,
|
76
|
+
avg_deletions: @deletions.round.to_i,
|
77
|
+
net_additions: @net_additions
|
56
78
|
}
|
57
79
|
end
|
58
80
|
end
|