Download:
child 32:1a20eb26c5df
parent 30:ac681cc74573
31:edd83c4dc2f0
Anton Shestakov <engored@ya.ru>, Thu, 28 May 2015 20:41:24 +0800
viewer: marks selector

2 файлов изменено, 49 вставок(+), 8 удалений(-) [+]
templates/results.html file | annotate | diff | comparison | revisions
viewer.py file | annotate | diff | comparison | revisions
--- a/templates/results.html Thu May 28 20:26:57 2015 +0800
+++ b/templates/results.html Thu May 28 20:41:24 2015 +0800
@@ -41,11 +41,23 @@
hover things for a tooltip; red means slow, green means fast; first
color and time means without .hg/cache, second means with .hg/cache.
</span>
- {% if local %}
- local colors (<a href="{{ setlocal(None) }}">switch to global colors</a>)
- {% else %}
- global colors (<a href="{{ setlocal(1) }}">switch to local colors</a>)
- {% end %}
+ <div>
+ {% if local %}
+ local colors (<a href="{{ setlocal(None) }}">switch to global colors</a>)
+ {% else %}
+ global colors (<a href="{{ setlocal(1) }}">switch to local colors</a>)
+ {% end %}
+ </div>
+ <div>
+ timings:
+ {% for mark, desc in marks.items() %}
+ -<a href="{{ setmarks(remove=mark) }}" title="{{ desc }}">{{ mark }}</a>
+ {% end %}
+ {% for mark, desc in moremarks.items() %}
+ +<a href="{{ setmarks(add=mark) }}" title="{{ desc }}">{{ mark }}</a>
+ {% end %}
+ *<a href="{{ setmarks() }}">all</a>
+ </div>
</header>
<table>
<thead>
--- a/viewer.py Thu May 28 20:26:57 2015 +0800
+++ b/viewer.py Thu May 28 20:41:24 2015 +0800
@@ -136,7 +136,7 @@
def urlencode(self, **kwargs):
def joinparams(params):
- return ','.join(quote_plus(i, '()') for i in params)
+ return ','.join(quote_plus(i, '(),') for i in params)
return '&'.join(quote_plus(k) + '=' + joinparams(v) for k, v in kwargs.items())
def setlocal(self, value=None):
@@ -167,18 +167,47 @@
else:
return self.request.path
+ def setmarks(self, marks):
+ def fn(value=None, add=None, remove=None):
+ kwargs = self.request.arguments.copy()
+ if add is not None:
+ kwargs['marks'] = kwargs['marks'] + [add]
+ elif remove is not None:
+ kwargs['marks'] = [mark for mark in marks if mark != remove]
+ elif value is not None:
+ kwargs['marks'] = value
+ else:
+ try:
+ kwargs.pop('marks')
+ except KeyError:
+ pass
+ if kwargs:
+ return '?' + self.urlencode(**kwargs)
+ else:
+ return self.request.path
+ return fn
+
def results_html(self):
changesets = self.getchangesets()
- marks = MARKS
+ showmarks = self.get_argument('marks', '')
+ if showmarks:
+ showmarks = showmarks.split(',')
+ marks = OrderedDict((mark, MARKS[mark]) for mark in showmarks if mark in MARKS)
+ moremarks = OrderedDict((mark, desc) for mark, desc in MARKS.items() if mark not in showmarks)
+ else:
+ marks = MARKS
+ moremarks = {}
local = self.get_argument('local', False)
results = self.getresults(changesets, marks=marks, local=local)
context = {
'changesets': changesets,
'marks': marks,
+ 'moremarks': moremarks,
'results': results,
'local': local,
'setlocal': self.setlocal,
- 'setrev': self.setrev
+ 'setrev': self.setrev,
+ 'setmarks': self.setmarks(marks)
}
self.render('results.html', **context)