diff --git a/rhodecode/controllers/changeset.py b/rhodecode/controllers/changeset.py
--- a/rhodecode/controllers/changeset.py
+++ b/rhodecode/controllers/changeset.py
@@ -86,6 +86,8 @@ class ChangesetController(BaseRepoContro
c.changes = OrderedDict()
c.sum_added = 0
c.sum_removed = 0
+ c.lines_added = 0
+ c.lines_deleted = 0
c.cut_off = False
for changeset in c.cs_ranges:
@@ -106,9 +108,8 @@ class ChangesetController(BaseRepoContro
c.sum_added += node.size
if c.sum_added < self.cut_off_limit:
f_gitdiff = differ.get_gitdiff(filenode_old, node)
- diff = differ.DiffProcessor(f_gitdiff,
- format='gitdiff').as_html()
-
+ d = differ.DiffProcessor(f_gitdiff, format='gitdiff')
+ diff = d.as_html()
else:
diff = wrap_to_table(_('Changeset is to big and '
'was cut off, see raw '
@@ -118,8 +119,11 @@ class ChangesetController(BaseRepoContro
cs1 = None
cs2 = node.last_changeset.raw_id
- c.changes[changeset.raw_id].append(('added', node,
- diff, cs1, cs2))
+ st = d.stat()
+ c.lines_added += st[0]
+ c.lines_deleted += st[1]
+ c.changes[changeset.raw_id].append(('added', node, diff,
+ cs1, cs2, st))
#==================================================================
# CHANGED FILES
@@ -138,9 +142,10 @@ class ChangesetController(BaseRepoContro
if c.sum_removed < self.cut_off_limit:
f_gitdiff = differ.get_gitdiff(filenode_old, node)
- diff = differ.DiffProcessor(f_gitdiff,
- format='gitdiff')\
- .as_html()
+ d = differ.DiffProcessor(f_gitdiff,
+ format='gitdiff')
+ diff = d.as_html()
+
if diff:
c.sum_removed += len(diff)
else:
@@ -152,8 +157,11 @@ class ChangesetController(BaseRepoContro
cs1 = filenode_old.last_changeset.raw_id
cs2 = node.last_changeset.raw_id
- c.changes[changeset.raw_id].append(('changed', node,
- diff, cs1, cs2))
+ st = d.stat()
+ c.lines_added += st[0]
+ c.lines_deleted += st[1]
+ c.changes[changeset.raw_id].append(('changed', node, diff,
+ cs1, cs2, st))
#==================================================================
# REMOVED FILES
@@ -161,7 +169,7 @@ class ChangesetController(BaseRepoContro
if not c.cut_off:
for node in changeset.removed:
c.changes[changeset.raw_id].append(('removed', node, None,
- None, None))
+ None, None, None))
if len(c.cs_ranges) == 1:
c.changeset = c.cs_ranges[0]
diff --git a/rhodecode/lib/helpers.py b/rhodecode/lib/helpers.py
--- a/rhodecode/lib/helpers.py
+++ b/rhodecode/lib/helpers.py
@@ -622,7 +622,8 @@ def changed_tooltip(nodes):
suf = ''
if len(nodes) > 30:
suf = '
' + _(' and %s more') % (len(nodes) - 30)
- return literal(pref + '
'.join([safe_unicode(x.path) for x in nodes[:30]]) + suf)
+ return literal(pref + '
'.join([safe_unicode(x.path)
+ for x in nodes[:30]]) + suf)
else:
return ': ' + _('No Files')
@@ -635,6 +636,56 @@ def repo_link(groups_and_repos):
return repo_name
else:
def make_link(group):
- return link_to(group.group_name, url('repos_group', id=group.group_id))
+ return link_to(group.group_name, url('repos_group',
+ id=group.group_id))
return literal(' » '.join(map(make_link, groups)) + \
" » " + repo_name)
+
+
+def fancy_file_stats(stats):
+ a, d, t = stats[0], stats[1], stats[0] + stats[1]
+ width = 100
+ unit = float(width) / t
+
+ a_p = max(9, unit * a) if a > 0 else 0# needs > 9% to be visible
+ d_p = max(9, unit * d) if d > 0 else 0 # needs > 9% to be visible
+ p_sum = a_p + d_p
+
+ if p_sum > width:
+ #adjust the percentage to be == 100% since we adjusted to 9
+ if a_p > d_p:
+ a_p = a_p - (p_sum - width)
+ else:
+ d_p = d_p - (p_sum - width)
+
+ a_v = a if a > 0 else ''
+ d_v = d if d > 0 else ''
+
+
+ def cgen(l_type):
+ mapping = {'tr':'top-right-rounded-corner',
+ 'tl':'top-left-rounded-corner',
+ 'br':'bottom-right-rounded-corner',
+ 'bl':'bottom-left-rounded-corner'}
+ map_getter = lambda x:mapping[x]
+
+ if l_type == 'a' and d_v:
+ #case when added and deleted are present
+ return ' '.join(map(map_getter, ['tl', 'bl']))
+
+ if l_type == 'a' and not d_v:
+ return ' '.join(map(map_getter, ['tr', 'br', 'tl', 'bl']))
+
+ if l_type == 'd' and a_v:
+ return ' '.join(map(map_getter, ['tr', 'br']))
+
+ if l_type == 'd' and not a_v:
+ return ' '.join(map(map_getter, ['tr', 'br', 'tl', 'bl']))
+
+
+
+ d_a = '