diff --git a/www/tooltip.js b/www/tooltip.js index ae51424..cf77f9b 100644 --- a/www/tooltip.js +++ b/www/tooltip.js @@ -1,113 +1,136 @@ -var tooltip=function(){ - var id = 'tt'; - var top = 3; - var left = 3; - var maxw = 500; - var speed = 10; - var timer = 20; - var endalpha = 95; - var alpha = 0; - var tt,t,c,b,h; - var ie = document.all ? true : false; - return{ - show:function(v,w,below){ - if (v.search("<table") == 0) { - v = v.replace(/</g, "<") - .replace(/>/g, ">") - .replace(/"/g, "\"") - .replace(/'/g, "'") - .replace(/&/g, "&"); - } - if(tt == null){ - tt = document.createElement('div'); - tt.setAttribute('id',id); - t = document.createElement('div'); - t.setAttribute('id',id + 'top'); - c = document.createElement('div'); - c.setAttribute('id',id + 'cont'); - b = document.createElement('div'); - b.setAttribute('id',id + 'bot'); - tt.appendChild(t); - tt.appendChild(c); - tt.appendChild(b); - document.body.appendChild(tt); - tt.style.opacity = 0; - tt.style.filter = 'alpha(opacity=0)'; - } - document.onmousemove = below ? this.pos2 : this.pos; - tt.style.display = 'block'; - c.innerHTML = v; - tt.style.width = w ? w + 'px' : 'auto'; - if(!w && ie){ - t.style.display = 'none'; - b.style.display = 'none'; - tt.style.width = tt.offsetWidth; - t.style.display = 'block'; - b.style.display = 'block'; - } - if(tt.offsetWidth > maxw){tt.style.width = maxw + 'px'} - h = parseInt(tt.offsetHeight) + top; - clearInterval(tt.timer); - tt.timer = setInterval(function(){tooltip.fade(1)},timer); - }, - pos:function(e){ - var u = ie ? event.clientY + document.documentElement.scrollTop : e.pageY; - var l = ie ? event.clientX + document.documentElement.scrollLeft : e.pageX; - var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; - var o = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; - var scroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; - var top = u - h; - if (top < scroll + 10) { - top = scroll + 10; - } - tt.style.top = top + 'px'; - if (w > maxw && l + maxw > w + o) { - tt.style.right = (w - l - left + 10) + 'px'; - tt.style.left = 'auto'; - } else { - tt.style.left = (l + left + 10) + 'px'; - tt.style.right = 'auto'; - } - }, - pos2:function(e){ - var u = ie ? event.clientY + document.documentElement.scrollTop : e.pageY; - var l = ie ? event.clientX + document.documentElement.scrollLeft : e.pageX; - var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; - var o = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; - var scroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; - var top = u + 24; - if (top < scroll + 10) { - top = scroll + 10; - } - tt.style.top = top + 'px'; - if (w > maxw && l + maxw > w + o) { - tt.style.right = (w - l - left + 10) + 'px'; - tt.style.left = 'auto'; - } else { - tt.style.left = (l + left + 10) + 'px'; - tt.style.right = 'auto'; - } - }, - fade:function(d){ - var a = alpha; - if((a != endalpha && d == 1) || (a != 0 && d == -1)){ - var i = speed; - if(endalpha - a < speed && d == 1){ - i = endalpha - a; - }else if(alpha < speed && d == -1){ - i = a; - } - alpha = a + (i * d); - tt.style.opacity = alpha * .01; - tt.style.filter = 'alpha(opacity=' + alpha + ')'; - }else{ - clearInterval(tt.timer); - if(d == -1){tt.style.display = 'none'} - } - }, - hide:function(){ - clearInterval(tt.timer); - tt.timer = setInterval(function(){tooltip.fade(-1)},timer); - } - }; -}(); +var tooltip = (function () { + var id = 'tt' + var top = 3 + var left = 3 + var maxw = 500 + var speed = 10 + var timer = 20 + var endalpha = 95 + var alpha = 0 + var tt, t, c, b, h + var ie = document.all ? true : false + return { + show: function (v, w, below) { + if (tt == null) { + tt = document.createElement('div') + tt.setAttribute('id', id) + t = document.createElement('div') + t.setAttribute('id', id + 'top') + c = document.createElement('div') + c.setAttribute('id', id + 'cont') + b = document.createElement('div') + b.setAttribute('id', id + 'bot') + tt.appendChild(t) + tt.appendChild(c) + tt.appendChild(b) + document.body.appendChild(tt) + tt.style.opacity = 0 + tt.style.filter = 'alpha(opacity=0)' + } + document.onmousemove = below ? this.pos2 : this.pos + tt.style.display = 'block' + c.innerHTML = v + tt.style.width = w ? w + 'px' : 'auto' + if (!w && ie) { + t.style.display = 'none' + b.style.display = 'none' + tt.style.width = tt.offsetWidth + t.style.display = 'block' + b.style.display = 'block' + } + if (tt.offsetWidth > maxw) { + tt.style.width = maxw + 'px' + } + h = parseInt(tt.offsetHeight) + top + clearInterval(tt.timer) + tt.timer = setInterval(function () { + tooltip.fade(1) + }, timer) + }, + pos: function (e) { + var u = ie ? event.clientY + document.documentElement.scrollTop : e.pageY + var l = ie ? event.clientX + document.documentElement.scrollLeft : e.pageX + var w = + window.innerWidth || + document.documentElement.clientWidth || + document.body.clientWidth + var o = + window.pageXOffset || + document.documentElement.scrollLeft || + document.body.scrollLeft || + 0 + var scroll = + window.pageYOffset || + document.documentElement.scrollTop || + document.body.scrollTop || + 0 + var top = u - h + if (top < scroll + 10) { + top = scroll + 10 + } + tt.style.top = top + 'px' + if (w > maxw && l + maxw > w + o) { + tt.style.right = w - l - left + 10 + 'px' + tt.style.left = 'auto' + } else { + tt.style.left = l + left + 10 + 'px' + tt.style.right = 'auto' + } + }, + pos2: function (e) { + var u = ie ? event.clientY + document.documentElement.scrollTop : e.pageY + var l = ie ? event.clientX + document.documentElement.scrollLeft : e.pageX + var w = + window.innerWidth || + document.documentElement.clientWidth || + document.body.clientWidth + var o = + window.pageXOffset || + document.documentElement.scrollLeft || + document.body.scrollLeft || + 0 + var scroll = + window.pageYOffset || + document.documentElement.scrollTop || + document.body.scrollTop || + 0 + var top = u + 24 + if (top < scroll + 10) { + top = scroll + 10 + } + tt.style.top = top + 'px' + if (w > maxw && l + maxw > w + o) { + tt.style.right = w - l - left + 10 + 'px' + tt.style.left = 'auto' + } else { + tt.style.left = l + left + 10 + 'px' + tt.style.right = 'auto' + } + }, + fade: function (d) { + var a = alpha + if ((a != endalpha && d == 1) || (a != 0 && d == -1)) { + var i = speed + if (endalpha - a < speed && d == 1) { + i = endalpha - a + } else if (alpha < speed && d == -1) { + i = a + } + alpha = a + i * d + tt.style.opacity = alpha * 0.01 + tt.style.filter = 'alpha(opacity=' + alpha + ')' + } else { + clearInterval(tt.timer) + if (d == -1) { + tt.style.display = 'none' + } + } + }, + hide: function () { + clearInterval(tt.timer) + tt.timer = setInterval(function () { + tooltip.fade(-1) + }, timer) + }, + } +})() diff --git a/www/top2html.py b/www/top2html.py index 1dcda70..bb92920 100755 --- a/www/top2html.py +++ b/www/top2html.py @@ -14,6 +14,9 @@ titles = { 'tag.txt': 'tags' } +def e(s): + return s.replace(''', '&#x27;') + omt0 = ''' onmouseover="tooltip.show('{}   {}')" onmouseout="tooltip.hide()"''' omt1 = ''' onmouseover="tooltip.show('{}   {}<br><small>{}</small>')" onmouseout="tooltip.hide()" class="tags"''' @@ -47,9 +50,9 @@ with open(sys.argv[1], 'rt', encoding='utf-8') as fp: cols=len(aa) p = 100 / mx * v if len(aa) > 2: - mo = omt1.format(aa[0], aa[1], aa[2]) + mo = omt1.format(e(aa[0]), e(aa[1]), e(aa[2])) else: - mo = omt0.format(aa[0], aa[1]) + mo = omt0.format(e(aa[0]), e(aa[1])) sys.stdout.buffer.write('
{}\n'.format(mo, p, aa[1]).encode('utf-8')) lineno += 1 if lineno == 20: