var SummaryPlugin = ActiveBuild.UiPlugin.extend({ id: 'build-summary', css: 'col-xs-12', title: Lang.get('build-summary'), box: true, statusIcons: [ 'fa-clock-o', 'fa-cogs', 'fa-check', 'fa-remove' ], statusLabels: [ Lang.get('pending'), Lang.get('running'), Lang.get('successful'), Lang.get('failed') ], statusClasses: ['text-blue', 'text-yellow', 'text-green', 'text-red'], register: function() { var self = this; var query = ActiveBuild.registerQuery('plugin-summary', 5, {key: 'plugin-summary'}) $(window).on('plugin-summary', function(data) { self.onUpdate(data); }); $(window).on('build-updated', function() { query(); }); }, render: function() { return $( '
' + '' + '' + '' + '' + '' + '
'+Lang.get('stage')+''+Lang.get('plugin')+''+Lang.get('status')+''+Lang.get('duration')+' (s)
' ); }, onUpdate: function(e) { if (!e.queryData) { $('#build-summary').hide(); return; } var tbody = $('#plugin-summary tbody'), summary = e.queryData[0].meta_value; tbody.empty(); for(var stage in summary) { for(var plugin in summary[stage]) { var data = summary[stage][plugin], duration = data.started ? ((data.ended || Math.floor(Date.now()/1000)) - data.started) : '-'; tbody.append( '' + '' + Lang.get('stage_'+stage) + '' + '' + plugin + '' + '' + ' ' + this.statusLabels[data.status] + '' + '' + duration + '' + '' ); } } $('#build-summary').show(); } }); ActiveBuild.registerPlugin(new SummaryPlugin());