[Profiler] Buid a common infrastructure
This commit is contained in:
parent
aa1676c7b5
commit
762d90d859
@ -450,3 +450,9 @@ td.main, td.menu {
|
|||||||
#collector_content .routing tr.almost td {
|
#collector_content .routing tr.almost td {
|
||||||
background-color: #fa0;
|
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 |
@ -0,0 +1 @@
|
|||||||
|
{% block panel '' %}
|
@ -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>
|
@ -27,6 +27,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div id="collector_content">
|
<div id="collector_content">
|
||||||
|
{% include 'WebProfilerBundle:Profiler:base_js.html.twig' %}
|
||||||
{% block panel '' %}
|
{% block panel '' %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Reference in New Issue
Block a user