Created
July 4, 2012 15:33
-
-
Save ratibus/3047910 to your computer and use it in GitHub Desktop.
Javascript to group queries in categories within sfDebugBar
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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