普通文本  |  69行  |  1.94 KB

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