2013-08-21 04:40:11 +02:00
|
|
|
$profiler = $("<div class='profiler' />").appendTo document.body
|
|
|
|
$toolbar = $('<div class="buttons" />').appendTo $profiler
|
|
|
|
|
|
|
|
$('<a href="#" class="open-button"><i class="icon-chevron-down"></i></a>')
|
|
|
|
.click (e) ->
|
|
|
|
e.preventDefault()
|
|
|
|
$(document.body).toggleClass 'profiler-open'
|
|
|
|
.appendTo $toolbar
|
|
|
|
|
|
|
|
$('<a href="#" class="clear-button">Clear</a>')
|
|
|
|
.click (e) ->
|
|
|
|
e.preventDefault()
|
|
|
|
$profiler.find('.requests').empty()
|
|
|
|
.appendTo $toolbar
|
|
|
|
|
|
|
|
$requestItems = $("<ul class='requests'>").appendTo $profiler
|
|
|
|
|
|
|
|
appendRequest = (method, url, req) ->
|
|
|
|
$requestItem = $("<li />")
|
|
|
|
$requestHeader = ($("<h3 />")).appendTo $requestItem
|
|
|
|
($("<span class='method' />").text method).appendTo $requestHeader
|
|
|
|
($("<span class='url' />").text url).appendTo $requestHeader
|
|
|
|
|
|
|
|
$logItems = $("<ul />").appendTo $requestItem
|
|
|
|
|
|
|
|
for logItem in req.request.log
|
|
|
|
$liItem = $("<li>")
|
|
|
|
|
|
|
|
$("<h4 class='log-" + logItem.level + "' />")
|
|
|
|
.html(logItem.message)
|
|
|
|
.click () ->
|
|
|
|
$(this).toggleClass 'open'
|
|
|
|
.appendTo($liItem)
|
|
|
|
|
|
|
|
$("<div class='clear' />").appendTo $liItem
|
|
|
|
$liItem.appendTo $logItems
|
|
|
|
|
|
|
|
for query in req.request.queries
|
2013-08-21 22:45:33 +02:00
|
|
|
queryText = query.query
|
|
|
|
for binding in query.bindings
|
|
|
|
queryText = queryText.replace '?', '"' + binding + '"'
|
|
|
|
|
2013-08-21 04:40:11 +02:00
|
|
|
$liItem = $("<li>")
|
|
|
|
($("<span class='time' />").text query.time).appendTo $liItem
|
|
|
|
|
|
|
|
$("<h4 class='prettyprint' />")
|
2013-08-21 22:45:33 +02:00
|
|
|
.html(prettyPrintOne(queryText, 'lang-sql'))
|
2013-08-21 04:40:11 +02:00
|
|
|
.click () ->
|
|
|
|
$(this).toggleClass 'open'
|
|
|
|
.appendTo($liItem)
|
|
|
|
|
|
|
|
$("<div class='clear' />").appendTo $liItem
|
|
|
|
$liItem.appendTo $logItems
|
|
|
|
|
|
|
|
$requestItem.appendTo $requestItems
|
|
|
|
$requestItems.animate {scrollTop: $requestItems[0].scrollHeight}, 300
|
|
|
|
|
|
|
|
oldOpen = XMLHttpRequest.prototype.open
|
|
|
|
|
|
|
|
XMLHttpRequest.prototype.open = (method, url) ->
|
|
|
|
intercept = =>
|
|
|
|
return if this.readyState != 4
|
|
|
|
return if !this.getResponseHeader('X-Request-Id')
|
|
|
|
id = this.getResponseHeader('X-Request-Id')
|
|
|
|
|
|
|
|
$.getJSON('/api/web/profiler/' + id).done (res) -> appendRequest method, url, res
|
|
|
|
|
|
|
|
(this.addEventListener "readystatechange", intercept, false) if url.indexOf('/api/web/profiler/') == -1
|
|
|
|
oldOpen.apply this, arguments
|