Use category min/max in change list colors
When colorizing the votes on the change list, look up the category min and max values to use the stronger versions of those colors only if the min or max values are present. Change-Id: I37525f0d9cda09b644a4a9dac5266cb6d56ca346
This commit is contained in:
parent
2da6039416
commit
c320a48c2a
16
gertty/db.py
16
gertty/db.py
@ -231,6 +231,22 @@ class Change(object):
|
||||
cat_value[approval.category] = cur_value
|
||||
self._approval_cache = cat_value
|
||||
|
||||
def getMinMaxPermittedForCategory(self, category):
|
||||
if not hasattr(self, '_permitted_cache'):
|
||||
self._updatePermittedCache()
|
||||
return self._permitted_cache.get(category, (0,0))
|
||||
|
||||
def _updatePermittedCache(self):
|
||||
cache = {}
|
||||
for label in self.labels:
|
||||
if label.category not in cache:
|
||||
cache[label.category] = [0, 0]
|
||||
if label.value > cache[label.category][1]:
|
||||
cache[label.category][1] = label.value
|
||||
if label.value < cache[label.category][0]:
|
||||
cache[label.category][0] = label.value
|
||||
self._permitted_cache = cache
|
||||
|
||||
def createRevision(self, *args, **kw):
|
||||
session = Session.object_session(self)
|
||||
args = [self] + list(args)
|
||||
|
@ -23,6 +23,10 @@ DEFAULT_PALETTE={
|
||||
'negative-label': ['dark red', ''],
|
||||
'max-label': ['light green', ''],
|
||||
'min-label': ['light red', ''],
|
||||
'focused-positive-label': ['dark green,standout', ''],
|
||||
'focused-negative-label': ['dark red,standout', ''],
|
||||
'focused-max-label': ['light green,standout', ''],
|
||||
'focused-min-label': ['light red,standout', ''],
|
||||
'link': ['dark blue', ''],
|
||||
'focused-link': ['light blue', ''],
|
||||
# Diff
|
||||
|
@ -569,14 +569,8 @@ class ChangeView(urwid.WidgetWrap):
|
||||
self.commit_message.set_text(change.revisions[-1].message)
|
||||
|
||||
categories = []
|
||||
max_values = {}
|
||||
min_values = {}
|
||||
approval_headers = [urwid.Text(('table-header', 'Name'))]
|
||||
for label in change.labels:
|
||||
if label.value > max_values.get(label.category, 0):
|
||||
max_values[label.category] = label.value
|
||||
if label.value < min_values.get(label.category, 0):
|
||||
min_values[label.category] = label.value
|
||||
if label.category in categories:
|
||||
continue
|
||||
approval_headers.append(urwid.Text(('table-header', label.category)))
|
||||
@ -600,15 +594,16 @@ class ChangeView(urwid.WidgetWrap):
|
||||
approvals_for_name[approval.reviewer.name] = approvals
|
||||
votes.addRow(row)
|
||||
if str(approval.value) != '0':
|
||||
cat_min, cat_max = change.getMinMaxPermittedForCategory(approval.category)
|
||||
if approval.value > 0:
|
||||
val = '+%i' % approval.value
|
||||
if approval.value == max_values.get(approval.category):
|
||||
if approval.value == cat_max:
|
||||
val = ('max-label', val)
|
||||
else:
|
||||
val = ('positive-label', val)
|
||||
else:
|
||||
val = '%i' % approval.value
|
||||
if approval.value == min_values.get(approval.category):
|
||||
if approval.value == cat_min:
|
||||
val = ('min-label', val)
|
||||
else:
|
||||
val = ('negative-label', val)
|
||||
|
@ -50,6 +50,10 @@ class ChangeRow(urwid.Button):
|
||||
change_focus_map = {None: 'focused',
|
||||
'unreviewed-change': 'focused-unreviewed-change',
|
||||
'reviewed-change': 'focused-reviewed-change',
|
||||
'positive-label': 'focused-positive-label',
|
||||
'negative-label': 'focused-negative-label',
|
||||
'min-label': 'focused-min-label',
|
||||
'max-label': 'focused-max-label',
|
||||
}
|
||||
|
||||
def selectable(self):
|
||||
@ -100,14 +104,22 @@ class ChangeRow(urwid.Button):
|
||||
del self.columns.contents[self.num_columns:]
|
||||
for category in categories:
|
||||
v = change.getMaxForCategory(category)
|
||||
cat_min, cat_max = change.getMinMaxPermittedForCategory(category)
|
||||
if v == 0:
|
||||
v = ''
|
||||
elif v < 0:
|
||||
v = ('min-label', '%2i' % v)
|
||||
val = ''
|
||||
elif v > 0:
|
||||
v = ('max-label', '%2i' % v)
|
||||
|
||||
self.columns.contents.append((urwid.Text(v), self.columns.options('given', 2)))
|
||||
val = '%2i' % v
|
||||
if v == cat_max:
|
||||
val = ('max-label', val)
|
||||
else:
|
||||
val = ('positive-label', val)
|
||||
else:
|
||||
val = '%i' % v
|
||||
if v == cat_min:
|
||||
val = ('min-label', val)
|
||||
else:
|
||||
val = ('negative-label', val)
|
||||
self.columns.contents.append((urwid.Text(val), self.columns.options('given', 2)))
|
||||
|
||||
class ChangeListHeader(urwid.WidgetWrap):
|
||||
def __init__(self, project=False, owner=False, updated=False):
|
||||
|
Loading…
x
Reference in New Issue
Block a user