add a delay-label to each results

This commit is contained in:
Jinyuan Huang 2023-09-29 06:45:39 +00:00
parent 75587d03a6
commit 7428fd390a
3 changed files with 49 additions and 0 deletions

View file

@ -16,6 +16,36 @@
}
));
function ping (url, callback) {
var start = performance.now();
var faviconUrl = new URL('/favicon.ico', url).href;
var xhr = new XMLHttpRequest();
xhr.open('GET', faviconUrl, true);
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
var end = performance.now();
var delay = end - start; // delay time in ms.
var level = delay <= 300 ? 'fast' : delay <= 1000 ? 'medium' : 'slow';
callback(level);
}
};
xhr.timeout = 3000;
xhr.ontimeout = function () {
callback('slow');
}
xhr.send();
}
// check network connection
d.querySelectorAll('article.result').forEach(article => {
var url = article.querySelector('span.url_i1').innerText;
ping(url, function (level) {
var delayElement = article.querySelector('span.delay');
delayElement.innerText = delayElement.dataset[level];
delayElement.classList.add(level);
});
})
searxng.on('.btn-collapse', 'click', function () {
var btnLabelCollapsed = this.getAttribute('data-btn-text-collapsed');
var btnLabelNotCollapsed = this.getAttribute('data-btn-text-not-collapsed');

View file

@ -417,6 +417,24 @@ article[data-vim-selected].category-social {
.ltr-margin-right(0.5rem);
.ltr-margin-left(0);
}
span.delay {
padding: 2px;
margin-left: 0.5rem;
border-radius: 2px;
&.fast {
color: #0f06;
}
&.medium {
color: #ff06;
}
&.slow {
color: #f006;
}
}
}
.small_font {

View file

@ -43,6 +43,7 @@
<div class="engines">
{% for engine in result.engines %}<span>{{ engine }}</span>{% endfor %}
{{ result_link(cache_url + result.url, icon_small('ellipsis-vertical-outline') + _('cached'), "cache_link") }}&lrm; {% if proxify and proxify_results %} {{ result_link(proxify(result.url), icon('link') + _('proxied'), "proxyfied_link") }} {% endif %}
<span class="delay" data-fast="Fast" data-medium="Medi" data-Slow="Slow"></span>
</div>{{- '' -}}
<div class="break"></div>{{- '' -}}
{%- endmacro -%}