Lamptest pinned header of table

for stick header of table when scrolling

// ==UserScript==
// @name     Lamptest pinned header of table
// @name:ru  Прилепленный заголовок таблицы для результатов тестирования ламп Lamptest
// @description:ru При прокрутке страницы и уходе заголовка из вьюпорта становится видимым прилепленный заголовок
// @grant    none
// @version     2.2019.4.29
// @namespace   spmbt.github.com
// @include http://lamptest.ru/*
// @include https://lamptest.ru/*
// @description for stick header of table when scrolling
// ==/UserScript==
d=document;
$q=(q,E)=>(E||d).querySelector(q);
$qA=(q,E)=>(E||d).querySelectorAll(q);
$x=(E,h,i)=>{if(h)for(i in h)E[i]=h[i];return E};
$e=(g,el,cl,ht,at,x,o)=>{ //===создать или использовать имеющийся элемент===
    if(el)g.el=el; if(cl)g.cl=cl; if(ht)g.ht=ht; //(оптимизации записей на позиционные)
    o = g.el = g.el|| g.clone && g.clone.cloneNode(!0)||'DIV';
    o = g.el = typeof o =='string'? /\W/.test(o) ? $q(o, g.blck) : d.createElement(o) : o;
    if(o){
        if(g.cl) o.className = g.cl;
        if(g.cs) $x(o.style, g.cs);
        if(g.ht || g.at){at = g.at ||{}; if(g.ht) at.innerHTML = g.ht;}
        if(at) for(x in at){
            if(x=='innerHTML') o[x] = at[x];
            else o.setAttribute(x, at[x]);}
        if(g.ap) o.appendChild(g.ap);
        g.apT && g.apT.appendChild(o);
        g.aft && ((x=g.aft.nextSibling)?g.aft.parentNode.insertBefore(o,x):g.aft.parentNode.appendChild(o));
        g.remove && g.remove.parentNode.removeChild(g.remove);
    }
return o};
var $tFix, wW, wX, $tNL, $TQuery = '#ajax_search_results', $T0 = $q($TQuery), $T;
setInterval(() => {
    $T0 = $q($TQuery);
    if(!$T0) return;
    $T = $T0;
    if(wW !== innerWidth || wX !== pageXOffset || !$qA('.tFix').length)
        wW = innerWidth,
        wX = pageXOffset,
        $sav = $q('.tFix tr:not(:first-child)'),
        $THCopy = $qA('th', $q('#ajax_results_table', $T)),
        $tFix = $e({cs:{position:'fixed', top:0, left: $T.getBoundingClientRect().x +'px',
                minWidth:'120px', minHeight:'20px', maxWidth:'none', width: ($T.offsetWidth + $THCopy.length * 2 - 5)+'px',
                paddingBottom:'1px', background:'rgba(183, 191, 234, 0.85)', fontSize:'0.8em'},
            apT:$q('body')},'TABLE','tFix','<tr style="text-align: center"></tr>'),
        $THCopy.forEach(el => $e({el:$q('tr', $tFix),
			ap: $e({clone: el, cs: {width: el.offsetWidth +'px', border:'1px solid #D5D5D5'}}) })),
        $e({aft: $sav},$q('tr', $tFix));
    if(($tNL = $qA('.tFix:not(:last-child)')).length)
        $e({remove: $tNL[0]});
    $e({cs:{display: $qA('tr', $tFix).length > 1 || $T.getBoundingClientRect().y < 0 ?'block':'none'}},$tFix);
}, 1330);