Skip to content

Instantly share code, notes, and snippets.

@ratibus
Created July 4, 2012 15:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save ratibus/3047910 to your computer and use it in GitHub Desktop.
Save ratibus/3047910 to your computer and use it in GitHub Desktop.
Javascript to group queries in categories within sfDebugBar
var sfWebDebugdbCategory = function () {
return {
init: function (categoriesPatterns) {
if (!$("#sfWebDebugdbDetails")) {
return ;
}
var categoryInfos = {};
var sqlInfosRegexp = /time: (.*) sec/;
$('li', $('#sfWebDebugDatabaseLogs')).each(function(index, el) {
var sql = $('.sfWebDebugDatabaseQuery', el).text();
var category = 'main';
var categoryFound = false;
for (var key in categoriesPatterns) {
for (var i = 0; i < categoriesPatterns[key].length; i++) {
var re = new RegExp(categoriesPatterns[key][i]);
if(re.test(sql))
{
category = key;
categoryFound = true;
break;
}
}
if (categoryFound) {
break;
}
}
var queryInfos = $('.sfWebDebugDatabaseLogInfo', el).text();
var queryTime = parseFloat(sqlInfosRegexp.exec(queryInfos)[1]);
if (typeof categoryInfos[category] === 'undefined')
{
categoryInfos[category] = {time: 0, nb: 0};
}
categoryInfos[category]['time'] += queryTime;
categoryInfos[category]['nb']++;
$(el).addClass('sql-'+category);
});
var categoryTotal = {time: 0, nb: 0};
for (var key in categoryInfos)
{
categoryTotal['time'] += categoryInfos[key]['time'];
categoryTotal['nb'] += categoryInfos[key]['nb'];
}
categoryInfos['total'] = categoryTotal;
var sqlInfosHtml = '<ul id="sfWebDebugDatabaseLogsCategories">';
for (var key in categoryInfos)
{
var inputHtml = '<input type="checkbox" name="sfWebDebugDatabaseLogsCategory" value="' + key + '" checked="checked">'
sqlInfosHtml += '<li>' + inputHtml + key + ' (' + categoryInfos[key]['nb'] +' reqs): ' + Math.round(categoryInfos[key]['time']*100)/100 + ' sec</li>'
}
sqlInfosHtml += '</ul>';
$(sqlInfosHtml).insertAfter($('h3', $('#sfWebDebugDatabaseLogs')));
$('#sfWebDebugDatabaseLogsCategories').delegate('input', 'click', function() {
var category = this.value;
if (category === 'total') {
if (this.checked) {
$('ol li', $('#sfWebDebugDatabaseLogs')).show();
$('input[name=sfWebDebugDatabaseLogsCategory]', $('#sfWebDebugDatabaseLogs')).attr('checked', 'checked');
} else {
$('ol li', $('#sfWebDebugDatabaseLogs')).hide();
$('input[name=sfWebDebugDatabaseLogsCategory]', $('#sfWebDebugDatabaseLogs')).attr('checked', '');
}
} else {
$('.sql-'+this.value, $('#sfWebDebugDatabaseLogs')).toggle();
}
});
}
}
}();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment