[Profiler] Buid a common infrastructure

This commit is contained in:
Victor Berchet 2012-01-28 18:56:53 +01:00
parent aa1676c7b5
commit 762d90d859
5 changed files with 80 additions and 0 deletions

View File

@ -450,3 +450,9 @@ td.main, td.menu {
#collector_content .routing tr.almost td {
background-color: #fa0;
}
.loading {
background: transparent url(../images/profiler/spinner.gif) scroll no-repeat 50% 50%;
height: 30px;
display: none;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1 @@
{% block panel '' %}

View File

@ -0,0 +1,72 @@
<script type="text/javascript">/*<![CDATA[*/
Sfjs = (function() {
"use strict";
var noop = function() {},
request = function(url, onSuccess, onError, payload, options) {
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
options = options || {};
xhr.open(options.method || 'GET', url, true);
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhr.onreadystatechange = function(state) {
if (4 === xhr.readyState && 200 === xhr.status) {
(onSuccess || noop)(xhr);
} else if (4 === xhr.readyState && xhr.status != 200) {
(onError || noop)(xhr);
}
};
xhr.send(payload || '');
},
hasClass = function(el, klass) {
return el.className.match(new RegExp('\\b' + klass + '\\b'));
},
removeClass = function(el, klass) {
el.className = el.className.replace(new RegExp('\\b' + klass + '\\b'), ' ');
},
addClass = function(el, klass) {
if (!hasClass(el, klass)) { el.className += " " + klass; }
};
return {
hasClass: hasClass,
removeClass: removeClass,
addClass: addClass,
request: request,
load: function(selector, url, onSuccess, onError, options) {
var el = document.querySelector(selector);
if (el && el.getAttribute('data-sfurl') !== url) {
request(
url,
function(xhr) {
el.innerHTML = xhr.responseText;
el.setAttribute('data-sfurl', url);
removeClass(el, 'loading');
(onSuccess || noop)(xhr, el);
},
function(xhr) { (onError || noop)(xhr, el); },
options
);
}
return this;
},
toggle: function(selector, elOn, elOff) {
var i,
style,
tmp = elOn.style.display,
els = document.querySelectorAll(selector);
elOn.style.display = elOff.style.display;
elOff.style.display = tmp;
if (els.length) {
style = 'none' === tmp ? 'none' : 'block';
for (i = els.length - 1; i >= 0; --i) {
els[i].style.display = style;
}
}
return this;
}
}
})();
/*]]>*/</script>

View File

@ -27,6 +27,7 @@
{% endif %}
<div id="collector_content">
{% include 'WebProfilerBundle:Profiler:base_js.html.twig' %}
{% block panel '' %}
</div>
</div>