gitprep / templates / include / commit_body.html.ep /
ed0f281 9 years ago
1 contributor
94 lines | 2.484kb
<%
  # Parameters
  my $rev = stash('rev');
  my $from_rev = stash('from_rev');

  my $param_ignore_space_change = param('w');
  my $ignore_space_change = defined $param_ignore_space_change;
  
  # Git
  my $git = app->git;
  
  # Diff tree
  my $diff_trees = $git->diff_tree(
    $user,
    $project,
    $rev,
    $from_rev,
    {ignore_space_change => $ignore_space_change}
  );

  my $diff_trees_h = {};
  for my $diff_tree (@$diff_trees) {
    my $file = $diff_tree->{to_file};
    $file = $diff_tree->{from_file} unless defined $file;
    $diff_trees_h->{$file} = $diff_tree if defined $file;
  }
  
  # Get blob diffs
  my $blob_diffs = $git->blob_diffs(
    $user,
    $project,
    $from_rev,
    $rev,
    $diff_trees,
    {ignore_space_change => $ignore_space_change}
  ) || [];
  
  my $blob_diffs_h = {};
  my $total_add_line_count = 0;
  my $total_delete_line_count = 0;
  for my $blob_diff (@$blob_diffs) {
    my $file = $blob_diff->{file};
    $blob_diffs_h->{$file} = $blob_diff;
    $total_add_line_count += $blob_diff->{add_line_count};
    $total_delete_line_count += $blob_diff->{delete_line_count};
  }
%>

%= javascript begin
  $(document).ready(function () {
  
    // Diff Stats Button
    var diff_tree_show = false;
    var original_diff_stats_btn_text = $('#diff-stats-btn').text();
    
    $('#diff-stats-btn').on('click', function () {
      if (diff_tree_show) {
        $(this).text(original_diff_stats_btn_text);
        $('#diff_tree').css('display', 'none');
      }
      else {
        $(this).text('Hide Diff Stats');
        $('#diff_tree').css('display', 'block');
      }
      diff_tree_show = !diff_tree_show;
    });
  });
% end

<div class="row" style="margin-bottom:10px">
  <div class="span8" style="padding-top:5px">
    Showing <b><%= @$diff_trees %> changed files</b>
    with
    <b><%= $total_add_line_count %> additions</b>
    and
    <b><%= $total_delete_line_count %> deletions</b>
  </div>
  <div class="text-right">
    <button id="diff-stats-btn" class="btn">Show Diff Stats</button>
  </div>
</div>
<div id="diff_tree" style="display:none">
  <%= include '/include/diff_tree', id => $rev, from_id => $from_rev,
    diff_trees => $diff_trees %>
</div>
% my $num = 0;
% for my $file (sort keys %$diff_trees_h) {
  <div id="diff-<%= $num %>">
    % my $blob_diff = $blob_diffs_h->{$file};
    %= include '/include/blob_diff_body', blob_diff => $blob_diff, diff_tree => $diff_trees_h->{$file};
  </div>
  % $num++;
% }
</div>