Skip to content

Instantly share code, notes, and snippets.

@RedBeard0531
Last active January 18, 2017 21:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save RedBeard0531/cdcdce1689643ba1fa2fe4786cd28263 to your computer and use it in GitHub Desktop.
Save RedBeard0531/cdcdce1689643ba1fa2fe4786cd28263 to your computer and use it in GitHub Desktop.
Crappy js to paste into console
// ==UserScript==
// @name Compact Waterfall Summary
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Make it Smaller
// @author Mathias Stearn
// @match https://evergreen.mongodb.com/waterfall/*
// @grant none
// ==/UserScript==
// vim: sts=2 sw=2:
(function() {
'use strict';
var taskStatuses = {};
function makeRow(versions, row, rowIx) {
var out =
`<tr><td><a href='/build_variant/${project}/${row.build_variant.id}'>${row.build_variant.display_name}</a>`;
for (var version of versions) {
out += `<td>&nbsp;`;
var build = row.builds[version.ids[0]];
if (build === undefined)
continue;
// out += `<!-- ${JSON.stringify(build)} -->`;
out += '<div class="collapsed-build">';
for (var status in build.taskStatusCount) {
var count = build.taskStatusCount[status];
if (count === 0)
continue;
const statusMap = {
succeeded : 'success',
timed_out : 'system-failed',
started : 'dispatched',
};
status = status in statusMap ? statusMap[status] : status;
out +=
`<a href='/build/${build.id}' status='${status}' class='task-summary ${status}'>${count}</a>`;
}
out +=
`</div><div row=${rowIx} buildid='${version.ids[0]}' class="active-build needs-fill" style="display: none">`;
if (1) {
// out += JSON.stringify({tasks : build.tasks})
} else {
for (var task of build.tasks) {
out +=
`<a href='/task/${task.id}' class='waterfall-box ${build.id} ${taskStatusClass(task)}' title='${task.display_name}'></a>`;
// out += `<!-- ${JSON.stringify(task)} -->`;
}
}
out += '</div>';
}
return out;
}
function makeHeader(versions) {
var out = '<tr><th>&nbsp;';
for (var version of versions) {
out += '<th>';
for (var i = 0; i < version.messages.length; i++) {
var message = version.messages[i];
if (message.length > 120) {
message = message.substr(0, 120) + '...';
}
message = message.replace(/SERVER-\d+/, '<a href=https://jira.mongodb.org/browse/$&>$&</a>');
out += `
<div>${new Date(version.create_times[i]).toLocaleString()}</div>
<div>
<a href='/version/${version.ids[i]}'>${version.revisions[i].substr(0,6)}</a>
<a href='https://github.com/mongodb/mongo/commit/${version.revisions[i]}'>(github)</a>
${version.authors[i]}
</div>
<div>${message}</div>`;
if (i != version.messages.length-1) out += '<hr>';
}
}
return out;
}
function makeTable(versions, rows) {
var out =
`<p class="garbage"><b>Click the blank spots on a row to toggle more details</b>
<button class="garbage">Toggle inactives</button>
<table class="garbage" border="solid" style="width: 100%; table-layout: fixed">` +
makeHeader(versions);
var ix = 0;
for (var row of rows) {
out += makeRow(versions, row, ix++);
}
out += '</table>';
return out;
}
$('.garbage').remove();
$('#root')
.prepend(makeTable(window.serverData.versions, window.serverData.rows));
$('table.garbage').find('.inactive').hide();
window.HIDE_INACTIVES = true;
$('button.garbage')
.click(function() {
$('table.garbage').find('.inactive').toggle();
window.HIDE_INACTIVES = !window.HIDE_INACTIVES;
});
$($('.btn-group')[0].cloneNode(true)).insertAfter($('button.garbage'));
$('table.garbage tr')
.click(function() {
$(this)
.find('.active-build')
.each(function() {
var elem = $(this);
if (elem.hasClass('needs-fill')) {
var buildid = this.attributes.buildid.value;
var row = this.attributes.row.value;
var tasks = window.serverData.rows[row].builds[buildid].tasks;
tasks = tasks.map(task => React.createElement(Task, {
task : task,
currentTime : window.serverData.current_time,
}));
ReactDOM.render(React.createElement('div', {}, tasks), this);
if (window.HIDE_INACTIVES) {
elem.find('.inactive').hide();
}
}
elem.toggle();
});
});
return 'success';
// Your code here...
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment