<!DOCTYPE html>
<!--
Copyright (c) 2014 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.
-->
<link rel="import" href="/perf_insights/results/results.html">
<link rel="import" href="/tracing/ui/base/overlay.html">
<script>
'use strict';

var g_viewEl;

(function() {
  var styleEl = document.createElement('style');
  var lines = [
    'html, body {',
    '  box-sizing: border-box;',
    '  overflow: auto;',
    '  margin: 0px;',
    '  padding: 0;',
    '  width: 100%;',
    '  height: 100%;',
    '  font-family: sans-serif;',
    '}',
    'body > .pib-result-view {',
    '  width: 100%;',
    '  height: 100%;',
    '}'
  ];
  styleEl.textContent = lines.join('\n');
  document.head.appendChild(styleEl);
})();

tr.exportTo('pib', function() {
  function initPiReportNamed(reportElementName) {
    g_viewEl = document.createElement(reportElementName);
    g_viewEl.classList.add('pib-result-view');
    document.body.appendChild(g_viewEl);

    var results = [];
    var wrDataScripts = document.querySelectorAll('#pi-report-data');
    if (wrDataScripts.length !== 1) {
      tr.base.showPanic('Init error', new Error('Expected 1 #pi-report-data'));
      return;
    }

    var text = wrDataScripts[0].textContent;
    // Trim leading newlines off the text. They happen during writing.
    while (text[0] == '\n')
      text = text.substring(1);

    var data = JSON.parse(text);

    var results;
    try {
      results = pi.r.Results.fromDict(data);
    } catch (ex) {
      var overlay = new tr.ui.b.Overlay();
      overlay.title = 'Results.fromDict error';
      overlay.textContent = tr.b.normalizeException(ex).stack;
      overlay.visible = true;
      return;
    }
    g_viewEl.mapResults = results;
  }

  return {
    initPiReportNamed: initPiReportNamed
  }
});
</script>
