69 lines
1.9 KiB
Python
69 lines
1.9 KiB
Python
|
#!/usr/bin/env python
|
||
|
#
|
||
|
# Copyright 2013 The Chromium Authors. All rights reserved.
|
||
|
# Use of this source code is governed by a BSD-style license that can be
|
||
|
# found in the LICENSE file.
|
||
|
|
||
|
import json
|
||
|
import sys
|
||
|
from string import Template
|
||
|
|
||
|
|
||
|
_HTML_TEMPLATE = """
|
||
|
<html>
|
||
|
<head>
|
||
|
<script type='text/javascript' src='https://www.google.com/jsapi'></script>
|
||
|
<script type='text/javascript'>
|
||
|
google.load('visualization', '1', {packages:['corechart', 'table']});
|
||
|
google.setOnLoadCallback(drawVisualization);
|
||
|
function drawVisualization() {
|
||
|
var data = google.visualization.arrayToDataTable(
|
||
|
$JSON_ARRAY
|
||
|
);
|
||
|
|
||
|
var charOptions = {
|
||
|
title: 'DMP Graph',
|
||
|
vAxis: {title: 'Timestamp', titleTextStyle: {color: 'red'}},
|
||
|
isStacked : true
|
||
|
};
|
||
|
|
||
|
var chart = new google.visualization.BarChart(
|
||
|
document.getElementById('chart_div'));
|
||
|
chart.draw(data, charOptions);
|
||
|
|
||
|
var table = new google.visualization.Table(
|
||
|
document.getElementById('table_div'));
|
||
|
table.draw(data);
|
||
|
}
|
||
|
</script>
|
||
|
</head>
|
||
|
<body>
|
||
|
<div id='chart_div' style="width: 1024px; height: 800px;"></div>
|
||
|
<div id='table_div' style="width: 1024px; height: 640px;"></div>
|
||
|
</body>
|
||
|
</html>
|
||
|
"""
|
||
|
|
||
|
def _GenerateGraph(json_data, policy):
|
||
|
legends = list(json_data['policies'][policy]['legends'])
|
||
|
legends = ['second'] + legends[legends.index('FROM_HERE_FOR_TOTAL') + 1:
|
||
|
legends.index('UNTIL_HERE_FOR_TOTAL')]
|
||
|
data = []
|
||
|
for snapshot in json_data['policies'][policy]['snapshots']:
|
||
|
data.append([0] * len(legends))
|
||
|
for k, v in snapshot.iteritems():
|
||
|
if k in legends:
|
||
|
data[-1][legends.index(k)] = v
|
||
|
print Template(_HTML_TEMPLATE).safe_substitute(
|
||
|
{'JSON_ARRAY': json.dumps([legends] + data)})
|
||
|
|
||
|
|
||
|
def main(argv):
|
||
|
_GenerateGraph(json.load(file(argv[1], 'r')), argv[2])
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
sys.exit(main(sys.argv))
|
||
|
|
||
|
|