88 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| (function ($) {
 | |
| 
 | |
|     var csscls = PhpDebugBar.utils.makecsscls('phpdebugbar-widgets-')
 | |
|     var languageStringsWidget = PhpDebugBar.Widgets.languageStringsWidget = PhpDebugBar.Widget.extend({
 | |
| 
 | |
|         tagName: 'table',
 | |
| 
 | |
|         className: csscls('languageStrings'),
 | |
| 
 | |
|         render: function () {
 | |
|             this.bindAttr('data', function (data) {
 | |
|                 this.$el.empty()
 | |
|                 for (var orphan in data.orphans) {
 | |
|                     var tr = $('<tr />')
 | |
|                     $('<th valign="top" style="width:10%" />').text(orphan).appendTo(tr)
 | |
|                     var td = $('<th />').appendTo(tr)
 | |
| 
 | |
|                     var ul = $('<ul />').appendTo(td)
 | |
| 
 | |
|                     var tableStack
 | |
| 
 | |
|                     for (var oc in data.orphans[orphan]) {
 | |
|                         var occurence = data.orphans[orphan][oc]
 | |
|                         var relPath = occurence['caller'].replace(data.jroot, '')
 | |
| 
 | |
|                         var li = $('<li />')
 | |
| 
 | |
|                         if (data.xdebugLink) {
 | |
|                             var parts = occurence['caller'].split(':')
 | |
|                             var link = $('<a />')
 | |
|                                 .text(relPath)
 | |
|                                 .attr(
 | |
|                                     'href',
 | |
|                                     data.xdebugLink
 | |
|                                         .replace('%f', parts[0])
 | |
|                                         .replace('%l', parts[1])
 | |
|                                 )
 | |
|                             li.append(link)
 | |
|                         } else {
 | |
|                             li.text(relPath)
 | |
|                         }
 | |
| 
 | |
|                         if (occurence['trace'] && !$.isEmptyObject(occurence['trace'])) {
 | |
|                             $('<span title="Call Stack" />')
 | |
|                                 .text('Stack')
 | |
|                                 .addClass(csscls('eye'))
 | |
|                                 .css('cursor', 'pointer')
 | |
|                                 .on('click', function (e) {
 | |
|                                     var btn = $(e.target)
 | |
|                                     var table = btn.next()
 | |
|                                     if (table.is(':visible')) {
 | |
|                                         table.hide()
 | |
|                                         btn.addClass(csscls('eye'))
 | |
|                                         btn.removeClass(csscls('eye-dash'))
 | |
|                                     } else {
 | |
|                                         table.show()
 | |
|                                         btn.addClass(csscls('eye-dash'))
 | |
|                                         btn.removeClass(csscls('eye'))
 | |
|                                     }
 | |
|                                 })
 | |
|                                 .appendTo(li)
 | |
| 
 | |
|                             tableStack = $('<table><thead><tr><th colspan="3">Call Stack</th></tr></thead></table>')
 | |
|                                 .addClass(csscls('callstack'))
 | |
|                                 .appendTo(li)
 | |
| 
 | |
|                             for (var i in occurence['trace']) {
 | |
|                                 var entry = occurence['trace'][i]
 | |
|                                 var location = entry[3] ? entry[3].replace(data.jroot, '') + ':' + entry[4] : ''
 | |
|                                 var caller = entry[2].replace(data.jroot, '')
 | |
|                                 var cssClass = entry[1] ? 'caller' : ''
 | |
|                                 if (location && data.xdebugLink) {
 | |
|                                     location = '<a href="' + data.xdebugLink.replace('%f', entry[3]).replace('%l', entry[4]) + '">' + location + '</a>'
 | |
|                                 }
 | |
|                                 tableStack.append('<tr class="' + cssClass + '"><th>' + entry[0] + '</th><td>' + caller + '</td><td>' + location + '</td></tr>')
 | |
|                             }
 | |
|                         }
 | |
| 
 | |
|                         li.appendTo(ul)
 | |
|                     }
 | |
| 
 | |
|                     this.$el.append(tr)
 | |
|                 }
 | |
|             })
 | |
|         }
 | |
|     })
 | |
| })(PhpDebugBar.$)
 |