prof2pretty-0.1.0.0: data/prof2pretty.js
var mode = 0, low = 0, high = 1, gamma = 1;
function colour(x) {
return 'hsl(' + Math.round(240 * x) + ',100%,' + Math.round(50 + 25 * x) + '%)';
}
function colourize() {
var prefix = [ 'top-', '' ];
for (p in prefix) {
for (id in profile) {
var e = document.getElementById(prefix[p] + id);
if (e) {
var s = e.style;
var v = profile[id][mode];
if (low < v && v <= high) {
s.display = 'inline-block';
s.padding = '2px';
s.backgroundColor = colour(Math.pow(1 - (profile[id][mode] - low) / (high - low), gamma));
} else {
s.display = '';
s.padding = '';
s.backgroundColor = '';
}
}
}
}
}
function go() {
var options = new Object();
var q = '' + this.location;
q = q.substring(q.indexOf('?') + 1);
if (q.indexOf('#') > -1) {
q = q.substring(0, q.indexOf('#'));
}
if (q.length >= 1) {
var kv = new Object();
var n = 1;
while (q.indexOf('&') > -1) {
kv[n] = q.substring(0, q.indexOf('&'));
q = q.substring(q.indexOf('&') + 1 );
n = n + 1;
}
kv[n] = q;
for (var i = 0; i <= n; i = i + 1) {
var k = (''+kv[i]).substring(0, (''+kv[i]).indexOf('='));
var v = (''+kv[i]).substring((''+kv[i]).indexOf('=') + 1);
options[k] = v;
}
}
var def = function(k,v) {
if (null == options[k]) { return v; } else { return options[k]; }
};
var modes = [ 'ticks', 'rticks', 'bytes', 'rbytes' ];
var modeNames = { 'ticks': 0, 'rticks': 1, 'bytes': 2 , 'rbytes': 3 };
mode = modeNames[def('mode', 'ticks')]; if (mode == null) { mode = 0; };
low = Math.min(Math.max(parseFloat(def('low', 0)), 0), 1);
high = Math.min(Math.max(parseFloat(def('high', 1)), 0), 1);
gamma = Math.min(Math.max(parseFloat(def('gamma', 1)), 0.1), 10);
document.getElementById('ui-' + modes[mode]).setAttributeNS(null, 'checked', 'checked');
$('#ui-mode').buttonset();
$('#ui-ticks').click(function() { mode = modeNames['ticks']; colourize(); });
$('#ui-bytes').click(function() { mode = modeNames['bytes']; colourize(); });
$('#ui-limit').slider({ orientation: 'vertical', min: 0, max: 1000, step: 1, range: true,
values: [1000 * (1 - high), 1000 * (1 - low)],
change: function(event, ui) {
low = 1 - ui.values[1] / 1000.0; high = 1 - ui.values[0] / 1000.0;
colourize();
}
});
$('#ui-gamma').slider({ orientation: 'vertical', min: 0, max: 1000, step: 1,
value: 1000 * (Math.log(gamma)/5 + 0.5),
change: function(event, ui) {
gamma = Math.exp(5 * (ui.value / 1000.0 - 0.5));
colourize();
}
});
colourize();
}