---
+++
@@ -103,7 +103,7 @@
filename = self._get_filename(graph, i)
title = '%s %s' % (self.GRAPHS[graph]['title'], 'Total Top %i' % TOP_N_VALUES)
- imgs.append({'title': title, 'filename':filename})
+ imgs.append([{'title': title, 'filename':filename}])
if not self.exists(filename):
# Totals graphs
total_values = copy.copy(sorted_values[:TOP_N_VALUES])
@@ -125,7 +125,7 @@
for j, values in enumerate(groups):
filename = self._get_filename(graph + str(i), j)
title = '%s %s' % (self.GRAPHS[graph]['title'], 'All %i/%i' % (j + 1, len(groups)))
- imgs.append({'title': title, 'filename':filename})
+ imgs[-1].append({'title': title, 'filename':filename})
if self.exists(filename):
continue
_values = [val[1] for val in values]
---
+++
@@ -1,5 +1,6 @@
import os
+from db_size import humanize
from output_file import OutputFile
HTML_BODY = """
@@ -17,11 +18,57 @@
</html>
"""
-class HtmlFile(OutputFile):
+
+class DBSizeFile(OutputFile):
+ def __init__(self, filename, dbsize_no):
+ OutputFile.__init__(self, '%s%i.html' % (filename, dbsize_no))
+ self.dbsize_no = dbsize_no
+
def render(self, objects):
self.write(HTML_BODY % self.filename)
for obj in objects:
- obj['url'] = os.path.basename(obj['filename'])
- self.write('<figure><embed type="image/svg+xml" src="%s" width="50%%" height="50%%"/></figure>'
- % obj['url'])
+ self.write('''<figure style="display: inline"><embed type="image/svg+xml" src="%s" width="40%%" height="40%%"/>
+ </figure>''' % (obj['url']))
self.write(HTML_FOOTER)
+
+
+class HtmlFile(OutputFile):
+ def render(self, objects, db_size):
+ for obj in objects:
+ for _obj in obj:
+ _obj['url'] = os.path.basename(_obj['filename'])
+
+ self.write(HTML_BODY % self.filename)
+
+ for i, obj in enumerate(objects):
+ self.write('''
+ <figure style="display: inline">
+ <a href="graph_%i.html"><embed type="image/svg+xml" src="%s" width="40%%" height="40%%"/>More...</a>
+ </figure>''' % (i, obj[0]['url']))
+ page = DBSizeFile('graph_', i)
+ page.render(obj)
+
+ # Sort tables by total size of the first type of graph
+ # TODO: Refactor the sorting and humanize call with db_size module
+ tables = []
+ for table in sorted(db_size.total_size, key=db_size.total_size.get, reverse=True):
+ _table = [table]
+ for graph in db_size.GRAPHS.keys():
+ val = getattr(db_size, graph + '_size')
+ _table.append(humanize(val[table], db_size.GRAPHS[graph]['counter_type']))
+ tables.append(_table)
+
+ self.write('<table><tr>')
+ self.write('<th>Table name</th>')
+ for graph_conf in db_size.GRAPHS.values():
+ self.write('<th>%s</th>' % graph_conf['title'])
+ self.write('</tr>')
+
+ for table in tables:
+ self.write('<tr>')
+ for _table in table:
+ self.write('<td>%s</td>' % _table)
+ self.write('</tr>')
+ self.write('</table>')
+
+ self.write(HTML_FOOTER)
---
+++
@@ -78,4 +78,4 @@
# Generate HTML files
html_file = HtmlFile('index.html')
- html_file.render(imgs)
+ html_file.render(imgs, db_size)
---
+++
@@ -14,7 +14,8 @@
os.mkdir(OUTPUT_DIR)
def close(self):
- self.fd.close()
+ if self.fd is not None:
+ self.fd.close()
def write(self, buf):
if self.fd is None:
Generated with KisssPM