<!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="/tracing/ui/timeline_view.html">
<script>
'use strict';

var g_timelineViewEl;

(function() {
  var styleEl = document.createElement('style');
  var lines = [
    'html, body {',
    '  box-sizing: border-box;',
    '  overflow: hidden;',
    '  margin: 0px;',
    '  padding: 0;',
    '  width: 100%;',
    '  height: 100%;',
    '}',
    'tr-ui-timeline-view {',
    '  width: 100%;',
    '  height: 100%;',
    '}',
    'tr-ui-timeline-view:focus {',
    '  outline: none;',
    '}'
  ];
  styleEl.textContent = lines.join('\n');
  document.head.appendChild(styleEl);
})();

document.addEventListener('DOMContentLoaded', function() {
  var container = document.createElement('track-view-container');
  container.id = 'track_view_container';

  g_timelineViewEl = document.createElement('tr-ui-timeline-view');
  g_timelineViewEl.appendChild(container);

  document.body.appendChild(g_timelineViewEl);

  var traces = [];
  var viewerDataScripts = document.querySelectorAll('#viewer-data');
  for (var i = 0; i < viewerDataScripts.length; i++) {
    var text = viewerDataScripts[i].textContent;
    // Trim leading newlines off the text. They happen during writing.
    while (text[0] == '\n')
      text = text.substring(1);
    traces.push(atob(text));
  }

  var m = new tr.Model();
  var i = new tr.importer.Import(m);
  var p = i.importTracesWithProgressDialog(traces);
  p.then(
      function() {
        g_timelineViewEl.model = m;
        g_timelineViewEl.updateDocumentFavicon();
        g_timelineViewEl.globalMode = true;
        g_timelineViewEl.viewTitle = document.title;
      },
      function(err) {
        var overlay = new tr.ui.b.Overlay();
        overlay.textContent = tr.b.normalizeException(err).message;
        overlay.title = 'Import error';
        overlay.visible = true;
      });
});
</script>
