prewikka/master: Chart rendering fixes

[email protected] Fri, 29 Jan 2010 18:01:52 +0100 (CET)
Newsgroups gmane.comp.security.ids.prelude.cvs
Message-ID <[email protected]>
commit 78403e3f1282e73a34d0c3bb78b53ac3c8692e12
Author: Yoann Vandoorselaere <[email protected]>
Date:   Thu Jan 21 09:17:03 2010 +0100

    Chart rendering fixes


========================================

 prewikka/Chart.py |   41 +++++++++++++----------------------------
 1 files changed, 13 insertions(+), 28 deletions(-)

========================================

diff --git a/prewikka/Chart.py b/prewikka/Chart.py
index 291dc89..2865585 100644
--- a/prewikka/Chart.py
+++ b/prewikka/Chart.py
@@ -270,37 +270,22 @@ class CairoDistributionChart(ChartCommon):
         fname = self._getFilename(name, expire, user, uid, gid);
 
         color = []
-        idx = 0
-        data = {}
+        data = utils.OrderedDict()
         total = 0
 
-        for l, v in zip(self._labels, self._values):
-                total += v
-                data[str(l)] = v
-
-                item_color = self.getItemColor(str(l))
-                if item_color:
-                        color.append(self.hex2rgb(item_color))
-                else:
-                        color.append(self.hex2rgb(self._color_map[idx % len(self._color_map)]))
-
-                idx += 1
+        lv = zip(self._labels, self._values)
+        lv.sort(lambda x, y: int(x[1] - y[1]))
 
-        other = 0
-        if data:
-            share = 100.0 / total
-
-        for key in data.keys():
-                if data[key] * share < 1:
-                        other += data[key]
-                else:
-                        nkey = key + ", %.1f%% (%d)" % (share * data[key], data[key])
-                        data[nkey] = data[key]
+        for l, v in lv:
+                total += v
 
-                data.pop(key)
+        if total:
+                share = 100.0 / total
 
-        if other:
-                data["Other, %.1f%% (%d)" % (share * other, other)] = other
+        for l, v in lv:
+                l = str(l)
+                data["%s (%d, %.2f%%)" % (l, v, share * v)] = v
+                color.append(self.hex2rgb(self.getItemColor(l)))
 
         cairoplot.pie_plot(fname, data, self._width, self._height, gradient = True, shadow = True, colors=color)
 
@@ -310,8 +295,7 @@ class CairoTimelineChart(TimelineChartCommon):
         fname = self._getFilename(name, expire, user, uid, gid);
 
         colors = []
-        legend = []
-        values = {}
+        values = utils.OrderedDict()
         for name in self._values.keys():
                 nname = name[0:min(len(name), 25)]
                 if not values.has_key(nname):
@@ -321,6 +305,7 @@ class CairoTimelineChart(TimelineChartCommon):
                         values[nname].append(item[0])
 
                 colors.append(self.hex2rgb(self.getItemColor(name)))
+
         cairoplot.dot_line_plot(fname, values, self._width, self._height, border=0, axis=True, grid=True,
                                 x_labels = self._labels, series_legend=True, series_colors=colors)
 
_______________________________________________
Prelude-cvslog site list
[email protected]
http://lists.prelude-ids.org/mailman/listinfo/prelude-cvslog