# HG changeset patch # User Marcin Kuzminski # Date 2010-08-29 19:56:56 # Node ID 0d4fceb91c9ca030c29f3ebd3b4ac082ac4cf97b # Parent 930f8182a884b8e7d98fe9ab7d7814d6f136e5a5 fixes #24, added generator that generates equally distrybuted colors. Thus skipping creating one large coloring history. diff --git a/pylons_app/controllers/files.py b/pylons_app/controllers/files.py --- a/pylons_app/controllers/files.py +++ b/pylons_app/controllers/files.py @@ -27,7 +27,7 @@ from pylons import request, response, se from pylons.controllers.util import redirect from pylons_app.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator from pylons_app.lib.base import BaseController, render -from pylons_app.lib.utils import EmptyChangeset, get_repo_slug +from pylons_app.lib.utils import EmptyChangeset from pylons_app.model.hg_model import HgModel from vcs.exceptions import RepositoryError, ChangesetError from vcs.nodes import FileNode diff --git a/pylons_app/lib/app_globals.py b/pylons_app/lib/app_globals.py --- a/pylons_app/lib/app_globals.py +++ b/pylons_app/lib/app_globals.py @@ -17,9 +17,7 @@ class Globals(object): """ self.cache = CacheManager(**parse_cache_config_options(config)) - self.changeset_annotation_colors = {} self.available_permissions = None # propagated after init_model - self.app_title = None # propagated after init_model self.baseui = None # propagated after init_model @LazyProperty diff --git a/pylons_app/lib/helpers.py b/pylons_app/lib/helpers.py --- a/pylons_app/lib/helpers.py +++ b/pylons_app/lib/helpers.py @@ -24,7 +24,6 @@ from webhelpers.text import chop_at, col convert_misc_entities, lchop, plural, rchop, remove_formatting, \ replace_whitespace, urlify, truncate, wrap_paragraphs - #Custom helpers here :) class _Link(object): ''' @@ -229,17 +228,31 @@ def pygmentize_annotation(filenode, **kw @param filenode: """ - color_dict = g.changeset_annotation_colors + color_dict = {} def gen_color(): - import random - return [str(random.randrange(10, 235)) for _ in xrange(3)] + """generator for getting 10k of evenly distibuted colors using hsv color + and golden ratio. + """ + import colorsys + n = 10000 + golden_ratio = 0.618033988749895 + h = 0.22717784590367374 + #generate 10k nice web friendly colors in the same order + for c in xrange(n): + h +=golden_ratio + h %= 1 + HSV_tuple = [h, 0.95, 0.95] + RGB_tuple = colorsys.hsv_to_rgb(*HSV_tuple) + yield map(lambda x:str(int(x*256)),RGB_tuple) + + cgenerator = gen_color() + def get_color_string(cs): if color_dict.has_key(cs): col = color_dict[cs] else: - color_dict[cs] = gen_color() - col = color_dict[cs] - return "color: rgb(%s) ! important;" % (', '.join(col)) + col = color_dict[cs] = cgenerator.next() + return "color: rgb(%s)! important;" % (', '.join(col)) def url_func(changeset): tooltip_html = "
Author:"+\ @@ -248,7 +261,7 @@ def pygmentize_annotation(filenode, **kw tooltip_html = tooltip_html % (changeset.author, changeset.date, tooltip(changeset.message)) - lnk_format = 'r%s:%s' % (changeset.revision, + lnk_format = 'r%-5s:%s' % (changeset.revision, changeset.raw_id) uri = link_to( lnk_format,