| <!DOCTYPE html> |
| <!-- |
| 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. |
| --> |
| <meta charset="utf-8"> |
| <link rel="stylesheet" href="static/third_party/jqTree/jqtree.css"> |
| <link rel="stylesheet" href="static/index.css"> |
| |
| <script src="static/third_party/flot/jquery.min.js"></script> |
| <script src="static/third_party/flot/jquery.flot.min.js"></script> |
| <script src="static/third_party/flot/jquery.flot.stack.min.js"></script> |
| <script src="static/third_party/jqTree/tree.jquery.js"></script> |
| <script src="static/utility.js"></script> |
| <script src="static/profiler.js"></script> |
| <script src="static/graph-view.js"></script> |
| <script src="static/dropdown-view.js"></script> |
| <script src="static/menu-view.js"></script> |
| <script> |
| $(function() { |
| {% if json is defined and template is defined %} |
| // Create model. |
| var profiler = new Profiler({{ json|safe }}, {{ template|safe }}); |
| // Create views subscribing model events. |
| var graphView = new GraphView(profiler); |
| var dropdownView = new DropdownView(profiler); |
| var menuView = new MenuView(profiler); |
| |
| // initialize categories according to roots information. |
| profiler.reparse(); |
| |
| // Share feature only appears in server version, so it should be written |
| // here where the unique file different against local version, rather than |
| // written as a view which is shared with local version. |
| $('#share-btn').click(function() { |
| // Get run_id and current breakdown template and send them to server. |
| // Post data will be decoded weirdly at app engine side if content isn't |
| // encoded. |
| var req_data = { |
| run_id: profiler.getRunId(), |
| content: JSON.stringify(profiler.getTemplate()) |
| }; |
| |
| $.ajax({ |
| type: 'POST', |
| url: '/share', |
| data: req_data, |
| success: function(url) { |
| $('.url').val(url); |
| $('.url').select(); |
| } |
| }); |
| }); |
| {% endif %} |
| }); |
| </script> |
| |
| <body> |
| <h1>Deep Memory Profiler Visualizer</h1> |
| <div> |
| <form enctype="multipart/form-data" action="{{ upload_url }}" method="post"> |
| <input type="file" name="file"/> |
| <input class="btn" type="submit" value="Upload"/> |
| </form> |
| <p class="error-message"> |
| {{ upload_msg }} |
| </p> |
| </div> |
| <div> |
| <button class="btn" id="share-btn">Share</button> |
| <input type="text" class="url"> |
| </div> |
| <div id="view-div"> |
| <div id="graph-div"></div> |
| <div id="info-div"> |
| <div id="category-menu"></div> |
| <div id="subs-dropdown"></div> |
| </div> |
| </div> |
| </body> |