diff svgsitemap/middleware.py @ 2:30d03e830354

compute line widths
author Jeff Hammel <jhammel@mozilla.com>
date Tue, 28 Dec 2010 16:47:36 -0800
parents 084088505eea
children 84344f9ed3f8
line wrap: on
line diff
--- a/svgsitemap/middleware.py	Tue Dec 28 16:23:07 2010 -0800
+++ b/svgsitemap/middleware.py	Tue Dec 28 16:47:36 2010 -0800
@@ -34,7 +34,8 @@
     defaults = { 'name': '',
                  'hosts': '',
                  'external_referers': True,
-                 'maxwidth': 20
+                 'maxwidth': 5,
+                 'minwidth': '0.01',
 
                  # input/output
                  'file': None, # .ini file
@@ -66,6 +67,7 @@
         # sanity checks + data fixing
         assert self.output, "Please give an output file"
         assert self.file, "Cannot save file!"
+        self.maxwidth = float(self.maxwidth)
         if self.hosts:
             self.hosts = self.hosts.split()
         else:
@@ -85,6 +87,7 @@
             self.graph = AGraph(name=self.name, splines=False, directed=True)
 
         # make it pretty
+        self.graph.graph_attr['name'] = self.name
         self.graph.graph_attr['label'] = self.name
         self.graph.graph_attr['fontname'] = self.fontname
         self.graph.graph_attr['fontcolor'] = self.fontcolor
@@ -144,14 +147,17 @@
             self.edges[(from_url, to_url)] = count
             edge = self.graph.get_edge(from_url, to_url)
             edge.attr['label'] =  str(count)
-            width = self.maxwidth * (count / self.max)
-            if not width:
-                width = 1
-            edge.attr['style'] = 'setlinewidth(%d)' % width
         else:
             self.edges[(from_url, to_url)] = 1
             self.graph.add_edge(from_url, to_url, label='1')
 
+        for edge in self.graph.edges():
+            count = self.edges[(edge[0], edge[1])]
+            width = self.maxwidth * count / self.max
+            if not width:
+                width = self.minwidth
+            edge.attr['style'] = 'setlinewidth(%s)' % width
+
         for url in from_url, to_url:
             node = self.graph.get_node(url)
             node.attr['label'] = url