(function($) { var csscls = PhpDebugBar.utils.makecsscls('phpdebugbar-widgets-'); /** * Widget for the displaying all modules * * Options: * - data */ var ModulesWidget = PhpDebugBar.Widgets.ModulesWidget = PhpDebugBar.Widget.extend({ className: csscls('modules'), render: function() { this.$list = new PhpDebugBar.Widgets.ListWidget({ itemRenderer: function(li, module) { $('').addClass(csscls('module')).addClass(csscls('name')).text(module.name).appendTo(li); $('').addClass('phpdebugbar-fa phpdebugbar-widgets-queries').text(module.queries.length).appendTo(li); $('').addClass('phpdebugbar-fa phpdebugbar-widgets-views').text(module.views.length).appendTo(li); $('').addClass('phpdebugbar-fa phpdebugbar-widgets-models').text(module.models.length).appendTo(li); var table = $('
Details
').addClass(csscls('params')).appendTo(li); if (module.models && module.models.length) { table.append(function () { var $name = $('').addClass(csscls('name')).html('Models'); var $value = $('').addClass(csscls('value')); var $span = $('').addClass('phpdebugbar-text-muted'); var index = 0; var $models = new PhpDebugBar.Widgets.ListWidget({ itemRenderer: function(li, binding) { var $index = $span.clone().text(index++ + '.'); li.append($index, ' ', binding).removeClass(csscls('list-item')).addClass(csscls('table-list-item')); }}); $models.set('data', module.models); $models.$el .removeClass(csscls('list')) .addClass(csscls('table-list')) .appendTo($value); return $('').append($name, $value); }); } if (module.views && module.views.length) { table.append(function () { var $name = $('').addClass(csscls('name')).html('Views'); var $value = $('').addClass(csscls('value')); var $views = new PhpDebugBar.Widgets.ListWidget({ itemRenderer: function(li, view) { li.append(view).removeClass(csscls('list-item')).addClass(csscls('table-list-item')); }}); $views.set('data', module.views); $views.$el .removeClass(csscls('list')) .addClass(csscls('table-list')) .appendTo($value); return $('').append($name, $value); }); } if (module.queries && module.queries.length) { table.append(function () { var $name = $('').addClass(csscls('name')).html('Queries'); var $value = $('').addClass(csscls('value')); var $queries = new PhpDebugBar.Widgets.ListWidget({ itemRenderer: function(li, query) { $('').addClass(csscls('sql')).html(PhpDebugBar.Widgets.highlight(query.sql, 'sql')).appendTo(li); $('').addClass(csscls('database')).text(query.connection).appendTo(li); $('').addClass(csscls('duration')).text(query.duration_str).appendTo(li); }}); $queries.set('data', module.queries); $queries.$el .removeClass(csscls('list')) .addClass(csscls('table-list')) .appendTo($value); return $('').append($name, $value); }); } li.css('cursor', 'pointer').click(function() { if (table.is(':visible')) { table.hide(); } else { table.show(); } }); }}); this.$list.$el.appendTo(this.$el); this.bindAttr('data', function(data) { this.$list.set('data', data.modules); }); } }); })(PhpDebugBar.$);