Showing 2 changed files with 159 additions and 136 deletions
+33 -6
templates/commit.html.ep
... ...
@@ -61,6 +61,27 @@
61 61
 %>
62 62
 
63 63
 % layout 'common';
64
+
65
+  %= javascript begin
66
+    $(document).ready(function () {
67
+    
68
+      // Diff Stats Button
69
+      var difftree_show = false;
70
+      var original_diff_stats_btn_text = $('#diff-stats-btn').text();
71
+      
72
+      $('#diff-stats-btn').on('click', function () {
73
+        if (difftree_show) {
74
+          $(this).text(original_diff_stats_btn_text);
75
+          $('#difftree').css('display', 'none');
76
+        }
77
+        else {
78
+          $(this).text('Hide Diff Stats');
79
+          $('#difftree').css('display', 'block');
80
+        }
81
+        difftree_show = !difftree_show;
82
+      });
83
+    });
84
+  % end
64 85
   
65 86
   %= include '/include/header', title => 'Commit diff';
66 87
 
... ...
@@ -148,12 +169,18 @@
148 169
       </div>
149 170
     </div>
150 171
 
151
-    <div style="margin-bottom:5px">
152
-      Showing <b><%= @$difftrees %> changed files</b>
172
+    <div class="row" style="margin-bottom:10px">
173
+      <div class="span8" style="padding-top:5px">
174
+        Showing <b><%= @$difftrees %> changed files</b>
175
+      </div>
176
+      <div class="text-right">
177
+        <button id="diff-stats-btn" class="btn">Show Diff Stats</button>
178
+      </div>
179
+    </div>
180
+    <div id="difftree" style="display:none">
181
+      <%= include '/include/difftree', id => $commit->{id}, from_id => $commit->{parent},
182
+        difftrees => $difftrees, parents => $commit->{parents}, project_ns => $project %>
153 183
     </div>
154
-    <%= include '/include/difftree', id => $commit->{id}, from_id => $commit->{parent},
155
-      difftrees => $difftrees, parents => $commit->{parents}, project_ns => $project %>
156
-    
157 184
     <div>
158 185
       % for my $file (sort keys %$difftrees_h) {
159 186
         % my $blob_diff = $blobdiffs_h->{$file};
... ...
@@ -168,7 +195,7 @@
168 195
           <div class="border-gray bk-gray-light" style="border-bottom:none;padding:10px">
169 196
             <%= $file %>
170 197
           </div>
171
-          <div class="border-gray" style="padding:10px">
198
+          <div class="border-gray" style="padding:10px;margin-bottom:30px">
172 199
             No changes. Empty file is added.
173 200
           </div>
174 201
         % }
+126 -130
templates/include/difftree.html.ep
... ...
@@ -2,155 +2,151 @@
2 2
   
3 3
   % my $has_header = @$difftrees && @$parents > 1 && stash('action') eq 'commitdiff';
4 4
   % if ($has_header) {
5
-    <thead>
6
-      <tr>
7
-        <th></th>
8
-        % for (my $i = 0; $i < @$parents; $i++) {
9
-          % my $parent = $parents->[$i];
10
-          % my $from_id = $parent;
11
-          <th>
12
-            <a href="<%= url_for("/$user/$project/commit/$from_id..$id") %>"
13
-                title="commitdiff to parent number <%= $i + 1 %> <%= substr($from_id, 0, 7) %>">
14
-              <%= $i + 1 %>
15
-            </a>
16
-          </th>
17
-        % }
18
-      </tr>
19
-    </thead>
5
+    <tr>
6
+      <th></th>
7
+      % for (my $i = 0; $i < @$parents; $i++) {
8
+        % my $parent = $parents->[$i];
9
+        % my $from_id = $parent;
10
+        <th>
11
+          <a href="<%= url_for("/$user/$project/commit/$from_id..$id") %>"
12
+              title="commitdiff to parent number <%= $i + 1 %> <%= substr($from_id, 0, 7) %>">
13
+            <%= $i + 1 %>
14
+          </a>
15
+        </th>
16
+      % }
17
+    </tr>
20 18
   % }
21
-  <tbody>
22 19
     % my $toggle = 0;
23 20
     % for my $difftree (@$difftrees) {
24 21
     
25
-      <tr>
26
-        % if (exists $difftree->{'nparents'}) {
27
-          % my $file = $difftree->{to_file};
28
-          
29
-          % if ($difftree->{is_deleted}) {
30
-            <td>
22
+    <tr>
23
+      % if (exists $difftree->{'nparents'}) {
24
+        % my $file = $difftree->{to_file};
25
+        
26
+        % if ($difftree->{is_deleted}) {
27
+          <td>
28
+            <%= $file %>
29
+          </td>
30
+        % } else {
31
+          <td>
32
+            <a href="<%= url_for("/$user/$project/blob/$id/$file") %>">
31 33
               <%= $file %>
32
-            </td>
33
-          % } else {
34
-            <td>
35
-              <a href="<%= url_for("/$user/$project/blob/$id/$file") %>">
36
-                <%= $file %>
37
-              </a>
38
-            </td>
39
-          % }
40
-
41
-          % my $not_deleted = 0;
42
-          % for (my $i = 0; $i < $difftree->{'nparents'}; $i++) {
43
-            % my $from_id = $parents->[$i];
44
-            % my $from_bid = $difftree->{'from_id'}[$i];
45
-            % my $from_file = $difftree->{'from_file'}[$i];
46
-            % $from_file = $file unless defined $from_file;
47
-            % my $status = $difftree->{'status'}[$i];
48
-            % $not_deleted ||= ($status ne 'D');
34
+            </a>
35
+          </td>
36
+        % }
49 37
 
50
-            % if ($status eq 'A') {
51
-              <td> | </td>
52
-            % } elsif ($status eq 'D') {
53
-              <td>
54
-                % my $blobdiff_url = url_for("/$user/$project/blobdiff/$from_id..$id/$file");
55
-                % $blobdiff_url->query('from-file' => $from_file) if $file ne $from_file;
38
+        % my $not_deleted = 0;
39
+        % for (my $i = 0; $i < $difftree->{'nparents'}; $i++) {
40
+          % my $from_id = $parents->[$i];
41
+          % my $from_bid = $difftree->{'from_id'}[$i];
42
+          % my $from_file = $difftree->{'from_file'}[$i];
43
+          % $from_file = $file unless defined $from_file;
44
+          % my $status = $difftree->{'status'}[$i];
45
+          % $not_deleted ||= ($status ne 'D');
56 46
 
57
-                <a href="<%= $blobdiff_url %>">
58
-                  blob<%= $i + 1 %>
59
-                </a>
60
-                |
61
-              </td>
62
-            % } else {
63
-              % if ($difftree->{'to_id'} eq $from_bid) {
64
-                <td>
65
-              % } else {
66
-                <td>
67
-              % }
68
-                % my $blobdiff_url = url_for("/$user/$project/blobdiff/$from_id..$id/$file");
47
+          % if ($status eq 'A') {
48
+            <td> | </td>
49
+          % } elsif ($status eq 'D') {
50
+            <td>
51
+              % my $blobdiff_url = url_for("/$user/$project/blobdiff/$from_id..$id/$file");
69 52
               % $blobdiff_url->query('from-file' => $from_file) if $file ne $from_file;
70
-              
53
+
71 54
               <a href="<%= $blobdiff_url %>">
72
-                diff<%= $i + 1 %>
55
+                blob<%= $i + 1 %>
73 56
               </a>
74
-              | </td>
57
+              |
58
+            </td>
59
+          % } else {
60
+            % if ($difftree->{'to_id'} eq $from_bid) {
61
+              <td>
62
+            % } else {
63
+              <td>
75 64
             % }
65
+              % my $blobdiff_url = url_for("/$user/$project/blobdiff/$from_id..$id/$file");
66
+            % $blobdiff_url->query('from-file' => $from_file) if $file ne $from_file;
67
+            
68
+            <a href="<%= $blobdiff_url %>">
69
+              diff<%= $i + 1 %>
70
+            </a>
71
+            | </td>
76 72
           % }
73
+        % }
77 74
 
78
-          <td>
79
-            % if ($not_deleted) {
80
-              % my $from_file = $difftree->{from_file};
81
-                % my $blobdiff_url = url_for("/$user/$project/blobdiff/$from_id..$id/$file");
82
-              % $blobdiff_url->query('from-file' => $from_file) if $file ne $from_file;
83
-
84
-              <a href="<%= $blobdiff_url %>">
85
-                blob
86
-              </a>
87
-            % }
88
-          </td>
89
-        % } else {
90
-          % my $status = $difftree->{status};
91
-          % my $file = $difftree->{to_file};
92
-          % my $file_type = $difftree->{to_file_type};
93
-          % my $mode = $difftree->{to_mode};
94
-          % my $mode_str = $difftree->{to_mode_str};
95
-          % my $mode_oct = $difftree->{to_mode_oct};
96
-          % my $from_file = $difftree->{from_file};
97
-          % my $from_file_type = $difftree->{from_file_type};
98
-          % my $from_mode = $difftree->{from_mode};
99
-          % my $from_mode_str = $difftree->{from_mode_str};
100
-          % my $from_mode_oct = $difftree->{from_mode_oct};
101
-          <td>
102
-            % if ($status eq 'A') {
103
-              <span class="file-add">+</span>
104
-            % } elsif ($status eq 'D') {
105
-              <span class="file-del">-</span>
106
-            % } elsif ($status eq 'M' || $status eq 'T') {
107
-              % if ($from_mode != $mode) {
108
-                <span>
109
-                  [
110
-                    changed
111
-                    % if ($from_file_type ne $file_type) {
112
-                      from <%= $from_file_type %> to <%= $file_type %>
113
-                    % }
114
-                    % if (($from_mode_oct & 0777) != ($mode_oct & 0777)) {
115
-                      % if ($from_mode_str && $mode_str) {
116
-                        mode: <%= $from_mode_str %>-><%= $mode_str %>
117
-                      % } elsif ($mode_str) {
118
-                        mode: <%= $mode_str %>
119
-                      % }
120
-                    % }
121
-                  ]
122
-                </span>
123
-              % }
124
-            % } elsif ($status eq 'R' || $status eq 'C') {
125
-              % my $status_name = $status eq 'R' ? 'moved' : 'copied';
75
+        <td>
76
+          % if ($not_deleted) {
77
+            % my $from_file = $difftree->{from_file};
78
+              % my $blobdiff_url = url_for("/$user/$project/blobdiff/$from_id..$id/$file");
79
+            % $blobdiff_url->query('from-file' => $from_file) if $file ne $from_file;
126 80
 
127
-              % my $mode_change = "";
128
-              % if ($difftree->{'from_mode'} != $difftree->{'to_mode'}) {
129
-                % $mode_change = sprintf(", mode: %04o", oct $difftree->{to_mode} & 0777);
130
-              % }
131
-              
81
+            <a href="<%= $blobdiff_url %>">
82
+              blob
83
+            </a>
84
+          % }
85
+        </td>
86
+      % } else {
87
+        % my $status = $difftree->{status};
88
+        % my $file = $difftree->{to_file};
89
+        % my $file_type = $difftree->{to_file_type};
90
+        % my $mode = $difftree->{to_mode};
91
+        % my $mode_str = $difftree->{to_mode_str};
92
+        % my $mode_oct = $difftree->{to_mode_oct};
93
+        % my $from_file = $difftree->{from_file};
94
+        % my $from_file_type = $difftree->{from_file_type};
95
+        % my $from_mode = $difftree->{from_mode};
96
+        % my $from_mode_str = $difftree->{from_mode_str};
97
+        % my $from_mode_oct = $difftree->{from_mode_oct};
98
+        <td>
99
+          % if ($status eq 'A') {
100
+            <span class="file-add">+</span>
101
+          % } elsif ($status eq 'D') {
102
+            <span class="file-del">-</span>
103
+          % } elsif ($status eq 'M' || $status eq 'T') {
104
+            % if ($from_mode != $mode) {
132 105
               <span>
133 106
                 [
134
-                  <%= $status_name %> from
135
-                % my $blobdiff_url = url_for("/$user/$project/blobdiff/$from_id..$id/$file");
136
-                  % $blobdiff_url->query('from-file' => $from_file) if $file ne $from_file;
137
-                  <a href="<%= $blobdiff_url %>">
138
-                    <%= $difftree->{from_file} %></a>
139
-                  with <%= $difftree->{similarity} %>%
140
-                  <%= $mode_change %>
107
+                  changed
108
+                  % if ($from_file_type ne $file_type) {
109
+                    from <%= $from_file_type %> to <%= $file_type %>
110
+                  % }
111
+                  % if (($from_mode_oct & 0777) != ($mode_oct & 0777)) {
112
+                    % if ($from_mode_str && $mode_str) {
113
+                      mode: <%= $from_mode_str %>-><%= $mode_str %>
114
+                    % } elsif ($mode_str) {
115
+                      mode: <%= $mode_str %>
116
+                    % }
117
+                  % }
141 118
                 ]
142 119
               </span>
143 120
             % }
144
-          </td>
145
-          <td>
146
-            % if ($status eq 'D') {
147
-              <span class="muted" style="margin-left:5px"><%= $file %></a>
148
-            % } else {
149
-              <sapn style="color:blue;margin-left:5px"><%= $file %></span>
121
+          % } elsif ($status eq 'R' || $status eq 'C') {
122
+            % my $status_name = $status eq 'R' ? 'moved' : 'copied';
123
+
124
+            % my $mode_change = "";
125
+            % if ($difftree->{'from_mode'} != $difftree->{'to_mode'}) {
126
+              % $mode_change = sprintf(", mode: %04o", oct $difftree->{to_mode} & 0777);
150 127
             % }
151
-          </td>
152
-        % }
153
-      </tr>
154
-    </tbody>
128
+            
129
+            <span>
130
+              [
131
+                <%= $status_name %> from
132
+              % my $blobdiff_url = url_for("/$user/$project/blobdiff/$from_id..$id/$file");
133
+                % $blobdiff_url->query('from-file' => $from_file) if $file ne $from_file;
134
+                <a href="<%= $blobdiff_url %>">
135
+                  <%= $difftree->{from_file} %></a>
136
+                with <%= $difftree->{similarity} %>%
137
+                <%= $mode_change %>
138
+              ]
139
+            </span>
140
+          % }
141
+        </td>
142
+        <td>
143
+          % if ($status eq 'D') {
144
+            <span class="muted" style="margin-left:5px"><%= $file %></a>
145
+          % } else {
146
+            <sapn style="color:blue;margin-left:5px"><%= $file %></span>
147
+          % }
148
+        </td>
149
+      % }
150
+    </tr>
155 151
   % }
156 152
 </table>