Showing 3 changed files with 43 additions and 15 deletions
+40
lib/Gitprep/API.pm
... ...
@@ -6,6 +6,46 @@ use Text::Markdown::Hoedown qw(HOEDOWN_EXT_FENCED_CODE HOEDOWN_EXT_TABLES HOEDOW
6 6
 
7 7
 has 'cntl';
8 8
 
9
+sub get_pull_request_count {
10
+  my ($self, $user_id, $project_id, $opt) = @_;
11
+  
12
+  $opt ||= {};
13
+  
14
+  my $project_row_id = $self->get_project_row_id($user_id, $project_id);
15
+  
16
+  my $where = $self->app->dbi->where;
17
+  my $clause = ['and', 'pull_request <> 0', ':project{=}'];
18
+  my $param = {project => $project_row_id};
19
+  
20
+  # Open
21
+  if (exists $opt->{open}) {
22
+    push @$clause, ':issue.open{=}';
23
+    $param->{'issue.open'} = $opt->{open};
24
+  }
25
+  
26
+  $where->clause($clause);
27
+  $where->param($param);
28
+  
29
+  my $pull_request_count = $self->app->dbi->model('issue')->select(
30
+    'count(*)',
31
+    where => $where
32
+  )->value;
33
+  
34
+  return $pull_request_count;
35
+}
36
+
37
+sub get_open_pull_request_count {
38
+  my ($self, $user_id, $project_id) = @_;
39
+  
40
+  return $self->get_pull_request_count($user_id, $project_id, {open => 1});
41
+}
42
+
43
+sub get_close_pull_request_count {
44
+  my ($self, $user_id, $project_id) = @_;
45
+  
46
+  return $self->get_pull_request_count($user_id, $project_id, {open => 0});
47
+}
48
+
9 49
 sub get_issue_count {
10 50
   my ($self, $user_id, $project_id, $opt) = @_;
11 51
   
+1 -1
templates/include/header.html.ep
... ...
@@ -130,7 +130,7 @@
130 130
               <li class="<%= $tab eq 'pulls' ? 'active' :  '' %>">
131 131
                 <a href="<%= url_for("/$user_id/$project_id/pulls") %>">
132 132
                   <i class="icon-retweet"></i>
133
-                  Pull request
133
+                  Pull request <div class="header-issue-count"><%= $api->get_open_pull_request_count($user_id, $project_id) %></div>
134 134
                 </a>
135 135
               </li>
136 136
               <li class="<%= $tab eq 'graph' ? 'active' :  '' %>">
+2 -14
templates/pulls.html.ep
... ...
@@ -31,22 +31,10 @@
31 31
   )->all;
32 32
   
33 33
   # Open count
34
-  my $open_count = app->dbi->model('issue')->select(
35
-    'count(*)',
36
-    where => [
37
-      ['and', ':issue.open{=}', ':pull_request{<>}', ':project{=}'],
38
-      {'issue.open' => 1, pull_request => 0, project => $project_row_id}
39
-    ]
40
-  )->value;
34
+  my $open_count = $api->get_open_pull_request_count($user_id, $project_id);
41 35
   
42 36
   # Close count
43
-  my $close_count = app->dbi->model('issue')->select(
44
-    'count(*)',
45
-    where => [
46
-      ['and', ':issue.open{=}', ':pull_request{<>}', ':project{=}'],
47
-      {'issue.open' => 0, pull_request => 0, project => $project_row_id}
48
-    ]
49
-  )->value;
37
+  my $close_count = $api->get_close_pull_request_count($user_id, $project_id);
50 38
   
51 39
   my $default_branch = app->manager->default_branch($user_id, $project_id);
52 40