You are here

performance_timing.html.twig in Devel 8.3

{% block toolbar %}
    {% set icon %}
    <a href="{{ url("webprofiler.dashboard", {profile: token}, {fragment: 'performance_timing'}) }}"
       title="{{ 'Performance Timing'|t }}">
        <img width="20" height="28" alt="{{ 'Performance Timing'|t }}"
             src="data:image/png;base64,{{ collector.icon }}"/>
        <span id="wp--frontend__toolbar"></span>
    </a>
    {% endset %}
    {% set text %}

    <div class="sf-toolbar-info-piece">
        <b>{{ 'DNS lookup'|t }}</b>
        <span id="wp--frontend__dns"></span>
    </div>
    <div class="sf-toolbar-info-piece">
        <b>{{ 'TCP handshake'|t }}</b>
        <span id="wp--frontend__tcp"></span>
    </div>
    <div class="sf-toolbar-info-piece">
        <b>{{ 'TTFB' }}</b>
        <span id="wp--frontend__ttfb"></span>
    </div>
    <div class="sf-toolbar-info-piece">
        <b>{{ 'Data download'|t }}</b>
        <span id="wp--frontend__data"></span>
    </div>
    <div class="sf-toolbar-info-piece">
        <b>{{ 'DOM building'|t }}</b>
        <span id="wp--frontend__dom"></span>
    </div>
    {% endset %}

    <div class="sf-toolbar-block">
        <div class="sf-toolbar-icon">{{ icon|default('') }}</div>
        <div class="sf-toolbar-info">{{ text|default('') }}</div>
    </div>

    <script>
        var perf = performance.timing,
                dns = parseInt(perf.domainLookupEnd - perf.domainLookupStart),
                tcp = parseInt(perf.connectEnd - perf.connectStart),
                ttfb = parseInt(perf.responseStart - perf.connectEnd),
                data = parseInt(perf.responseEnd - perf.responseStart),
                dom = parseInt(perf.loadEventStart - perf.responseEnd);

        Webprofiler.ajax('{{ url("webprofiler.frontend.save", {profile: token}) }}', false, JSON.stringify(perf));

        document.getElementById('wp--frontend__toolbar').innerHTML = ttfb + ' ms';
        document.getElementById('wp--frontend__dns').innerHTML = dns + ' ms';
        document.getElementById('wp--frontend__tcp').innerHTML = tcp + ' ms';
        document.getElementById('wp--frontend__ttfb').innerHTML = ttfb + ' ms';
        document.getElementById('wp--frontend__data').innerHTML = data + ' ms';
        document.getElementById('wp--frontend__dom').innerHTML = dom + ' ms';
    </script>
{% endblock %}

{% block panel %}
    <script id="performance_timing" type="text/template">
        <h2 class="panel__title">{{ 'Performance timing'|t }}</h2>
        <div class="panel__container">
            <% if(data.performance && data.performance.computed) { %>
                <table class="table--duo">
                    <% _.each( data.performance.computed, function( item, key ){ %>
                    <tr>
                        <th><%- key %></th>
                        <td><%- Drupal.webprofiler.helpers.printTime(item) %></td>
                    </tr>
                    <% }); %>
                </table>
            <% } else { %>
                <p>{{ 'No collected data, maybe this profile hasn\'t been generated by a browser GET o has been generated by an unsupported browser.'|t }}</p>
            <% } %>
        </div>
    </script>
{% endblock %}

File

webprofiler/templates/Collector/performance_timing.html.twig
View source
  1. {% block toolbar %}
  2. {% set icon %}
  3. <a href="{{ url("webprofiler.dashboard", {profile: token}, {fragment: 'performance_timing'}) }}"
  4. title="{{ 'Performance Timing'|t }}">
  5. <img width="20" height="28" alt="{{ 'Performance Timing'|t }}"
  6. src="data:image/png;base64,{{ collector.icon }}"/>
  7. <span id="wp--frontend__toolbar"></span>
  8. </a>
  9. {% endset %}
  10. {% set text %}
  11. <div class="sf-toolbar-info-piece">
  12. <b>{{ 'DNS lookup'|t }}</b>
  13. <span id="wp--frontend__dns"></span>
  14. </div>
  15. <div class="sf-toolbar-info-piece">
  16. <b>{{ 'TCP handshake'|t }}</b>
  17. <span id="wp--frontend__tcp"></span>
  18. </div>
  19. <div class="sf-toolbar-info-piece">
  20. <b>{{ 'TTFB' }}</b>
  21. <span id="wp--frontend__ttfb"></span>
  22. </div>
  23. <div class="sf-toolbar-info-piece">
  24. <b>{{ 'Data download'|t }}</b>
  25. <span id="wp--frontend__data"></span>
  26. </div>
  27. <div class="sf-toolbar-info-piece">
  28. <b>{{ 'DOM building'|t }}</b>
  29. <span id="wp--frontend__dom"></span>
  30. </div>
  31. {% endset %}
  32. <div class="sf-toolbar-block">
  33. <div class="sf-toolbar-icon">{{ icon|default('') }}</div>
  34. <div class="sf-toolbar-info">{{ text|default('') }}</div>
  35. </div>
  36. <script>
  37. var perf = performance.timing,
  38. dns = parseInt(perf.domainLookupEnd - perf.domainLookupStart),
  39. tcp = parseInt(perf.connectEnd - perf.connectStart),
  40. ttfb = parseInt(perf.responseStart - perf.connectEnd),
  41. data = parseInt(perf.responseEnd - perf.responseStart),
  42. dom = parseInt(perf.loadEventStart - perf.responseEnd);
  43. Webprofiler.ajax('{{ url("webprofiler.frontend.save", {profile: token}) }}', false, JSON.stringify(perf));
  44. document.getElementById('wp--frontend__toolbar').innerHTML = ttfb + ' ms';
  45. document.getElementById('wp--frontend__dns').innerHTML = dns + ' ms';
  46. document.getElementById('wp--frontend__tcp').innerHTML = tcp + ' ms';
  47. document.getElementById('wp--frontend__ttfb').innerHTML = ttfb + ' ms';
  48. document.getElementById('wp--frontend__data').innerHTML = data + ' ms';
  49. document.getElementById('wp--frontend__dom').innerHTML = dom + ' ms';
  50. </script>
  51. {% endblock %}
  52. {% block panel %}
  53. <script id="performance_timing" type="text/template">
  54. <h2 class="panel__title">{{ 'Performance timing'|t }}</h2>
  55. <div class="panel__container">
  56. <% if(data.performance && data.performance.computed) { %>
  57. <table class="table--duo">
  58. <% _.each( data.performance.computed, function( item, key ){ %>
  59. <tr>
  60. <th><%- key %></th>
  61. <td><%- Drupal.webprofiler.helpers.printTime(item) %></td>
  62. </tr>
  63. <% }); %>
  64. </table>
  65. <% } else { %>
  66. <p>{{ 'No collected data, maybe this profile hasn\'t been generated by a browser GET o has been generated by an unsupported browser.'|t }}</p>
  67. <% } %>
  68. </div>
  69. </script>
  70. {% endblock %}