#!/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))