Module: tools Branch: master Commit: 16ac37ae118b6116f8eb1fdef255a1439e300917 URL: https://source.winehq.org/git/tools.git/?a=commit;h=16ac37ae118b6116f8eb1fde...
Author: Francois Gouget fgouget@codeweavers.com Date: Thu Apr 14 18:54:21 2022 +0200
testbot/cgi: Only refresh pages when the top is visible.
This stops pages from refreshing and losing the scroll position while one is inspecting a log file, looking at old job results, etc.
Signed-off-by: Francois Gouget fgouget@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
testbot/lib/WineTestBot/CGI/PageBase.pm | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-)
diff --git a/testbot/lib/WineTestBot/CGI/PageBase.pm b/testbot/lib/WineTestBot/CGI/PageBase.pm index 47f2da5..6e55316 100644 --- a/testbot/lib/WineTestBot/CGI/PageBase.pm +++ b/testbot/lib/WineTestBot/CGI/PageBase.pm @@ -416,11 +416,6 @@ sub GenerateHttpHeaders($) # HTTP/1.0 $Request->headers_out->add("Pragma", "no-cache");
- if ($self->{Refresh}) - { - $self->{Request}->headers_out->add("Refresh", $self->{Refresh}); - } - # Force char set $Request->content_type("text/html; charset=UTF-8");
@@ -462,12 +457,32 @@ EOF } print ">\n";
- print <<EOF; + print "<div id='logo_blurb'>${ProjectName} Test Bot</div>\n"; + if ($self->{Refresh}) + { + print <<EOF; +<script type='text/javascript'> +<!-- +var Reloader; +var Observer = new IntersectionObserver(function(entries) { + if (Reloader) + { + clearTimeout(Reloader); + Reloader = undefined; + } + if (entries[0].isIntersecting === true) + { + Reloader = setTimeout(function() { location.reload(); }, $self->{Refresh} * 1000); + } +}, { threshold: [0] });
-<div id="logo_blurb"> -${ProjectName} Test Bot -</div> +Observer.observe(document.querySelector("#logo_blurb")); +//--> +</script> +EOF + }
+ print <<EOF; <div id='tabs'> <ul> <li><a href='//www.winehq.org/'>WineHQ</a></li>