var SummaryPlugin = ActiveBuild.UiPlugin.extend({ id: 'build-summary', css: 'col-xs-12', title: Lang.get('build-summary'), statusLabels: [ Lang.get('pending'), Lang.get('running'), Lang.get('success'), Lang.get('failed'), Lang.get('failed_allowed') ], statusClasses: [ 'info', 'warning', 'success', 'danger', 'danger' ], 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') + ' (' + Lang.get('seconds') + ')
' ); }, 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) : '-'; var pluginName = Lang.get(plugin); if (0 < data.errors) { pluginName = '' + Lang.get(plugin) + ''; } tbody.append( '' + '' + Lang.get('stage_' + stage) + '' + '' + pluginName + '' + '' + this.statusLabels[data.status] + '' + '' + duration + '' + '' ); } } $('#build-summary').show(); } }); ActiveBuild.registerPlugin(new SummaryPlugin());