- // ==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);