var phpunitPlugin = ActiveBuild.UiPlugin.extend({ id: 'build-phpunit-errors', css: 'col-lg-6 col-md-12 col-sm-12 col-xs-12', title: Lang.get('phpunit'), lastData: null, displayOnUpdate: false, box: true, rendered: false, statusMap: { success : 'ok', fail: 'remove', error: 'warning-sign', todo: 'info-sign', skipped: 'exclamation-sign' }, register: function() { var self = this; var query = ActiveBuild.registerQuery('phpunit-data', -1, {key: 'phpunit-data'}) $(window).on('phpunit-data', function(data) { self.onUpdate(data); }); $(window).on('build-updated', function() { if (!self.rendered) { self.displayOnUpdate = true; query(); } }); $(document).on('click', '#phpunit-data .test-toggle', function(ev) { var input = $(ev.target); $('#phpunit-data tbody ' + input.data('target')).toggle(input.prop('checked')); }); }, render: function() { return $('
' + '' + '' + ' ' + '' + '
'+Lang.get('test_message')+'
'); }, onUpdate: function(e) { if (!e.queryData) { $('#build-phpunit-errors').hide(); return; } this.rendered = true; this.lastData = e.queryData; var tests = this.lastData[0].meta_value; var thead = $('#phpunit-data thead tr'); var tbody = $('#phpunit-data tbody'); thead.empty().append(''+Lang.get('test_message')+''); tbody.empty(); if (tests.length == 0) { $('#build-phpunit-errors').hide(); return; } var counts = { success: 0, fail: 0, error: 0, skipped: 0, todo: 0 }, total = 0; for (var i in tests) { var severity = tests[i].severity || 'success', message = tests[i].message || ('' + Lang.get('test_no_message') + ''); counts[severity]++; total++; tbody.append( '' + '' + '
' + message + '
' + (tests[i].data ? '
' + this.repr(tests[i].data) + '
' : '') + '' + '' ); } var checkboxes = $(''); thead.append(checkboxes).append('' + Lang.get('test_total', total) + ''); for (var key in counts) { var count = counts[key]; if(count > 0) { checkboxes.append( '
 ' + Lang.get('test_'+key, count)+ '
' ); } } tbody.find('.success').hide(); $('#build-phpunit-errors').show(); }, repr: function(data) { switch(typeof(data)) { case 'boolean': return '' + (data ? 'true' : 'false') + ''; case 'string': return '"' + data + '"'; case 'undefined': case null: return 'null'; case 'object': var rows = []; if(data instanceof Array) { for(var i in data) { rows.push('' + this.repr(data[i]) + ','); } } else { for(var key in data) { rows.push( '' + '' + this.repr(key) + '' + '=>' + '' + this.repr(data[key]) + ',' + ''); } } return '' + '' + rows.join('') + '' + '
array(
)
'; } return '???'; } }); ActiveBuild.registerPlugin(new phpunitPlugin());