2021-11-13 10:42:07 +01:00
{% from 'simple/icons.html' import icon_big %}
2021-07-18 15:38:52 +02:00
{% from '__common__/new_issue.html' import new_issue with context %}
2021-04-23 11:01:54 +02:00
2017-02-12 15:06:01 +01:00
{% extends "simple/base.html" %}
2021-04-23 11:01:54 +02:00
{%- macro th_sort(column_order, column_name) -%}
2021-04-23 21:08:48 +02:00
{% if selected_engine_name %}
{{ column_name }}
{% elif column_order==sort_order %}
2021-11-13 10:42:07 +01:00
{{ column_name }} {{ icon_big('arrow-dropdown') }}
2021-04-23 11:01:54 +02:00
{% else %}
2021-04-23 21:08:48 +02:00
< a href = "{{ url_for('stats', sort=column_order) }}" > {{ column_name }}</ a >
2021-04-23 11:01:54 +02:00
{% endif %}
{%- endmacro -%}
2017-02-12 15:06:01 +01:00
{% block head %} {% endblock %}
{% block content %}
2021-10-01 16:33:31 +02:00
< a href = "{{ url_for('index') }}" >< h1 >< span > SearXNG</ span ></ h1 ></ a >
2017-02-12 15:06:01 +01:00
2021-09-12 10:52:15 +02:00
< h2 > {% if selected_engine_name %}< a href = "{{ url_for('stats') }}" > {% endif %}{{ _('Engine stats') }}{% if selected_engine_name %}</ a > - {{ selected_engine_name }}{% endif %}</ h2 >
2017-02-12 15:06:01 +01:00
2021-04-23 11:01:54 +02:00
{% if not engine_stats.get('time') %}
{{ _('There is currently no data available. ') }}
{% else %}
2021-05-16 14:18:42 +02:00
< table class = "engine-stats" >
2021-04-23 11:01:54 +02:00
< tr >
2021-05-16 14:18:42 +02:00
< th scope = "col" class = "engine-name" > {{ th_sort('name', _("Engine name")) }}</ th >
2021-05-17 17:56:18 +02:00
< th scope = "col" class = "engine-score" > {{ th_sort('score', _('Scores')) }}</ th >
2021-05-16 14:18:42 +02:00
< th scope = "col" class = "result-count" > {{ th_sort('result_count', _('Result count')) }}</ th >
< th scope = "col" class = "response-time" > {{ th_sort('time', _('Response time')) }}</ th >
< th scope = "col" class = "engine-reliability" > {{ th_sort('reliability', _('Reliability')) }}</ th >
2021-04-23 11:01:54 +02:00
</ tr >
{% for engine_stat in engine_stats.get('time', []) %}
< tr >
2021-05-16 14:18:42 +02:00
< td class = "engine-name" >< a href = "{{ url_for('stats', engine=engine_stat.name|e) }}" > {{ engine_stat.name }}</ a ></ td >
2021-05-17 17:56:18 +02:00
< td class = "engine-score" >
2021-04-23 11:01:54 +02:00
{% if engine_stat.score %}
< span aria-labelledby = "{{engine_stat.name}}_score" > {{ engine_stat.score|round(1) }}</ span >
< div class = "engine-tooltip" role = "tooltip" id = "{{engine_stat.name}}_score" > {{- "" -}}
< p > {{ _('Scores per result') }}: {{ engine_stat.score_per_result | round(3) }}</ p >
</ div >
{% endif %}
</ td >
2021-05-16 14:18:42 +02:00
< td class = "engine-result-count" >
2021-04-23 11:01:54 +02:00
{%- if engine_stat.result_count -%}
2021-05-16 13:16:44 +02:00
< div class = "bar-chart-value" > {{- engine_stat.result_count | int -}}</ div > {{- "" -}}
2021-05-17 17:56:18 +02:00
< div class = "bar-chart-graph" aria-hidden = "true" >
< div class = "bar-chart-bar bar{{ (100 * engine_stat.result_count / engine_stats.max_result_count)|round }}" ></ div > {{- "" -}}
</ div >
2021-04-23 11:01:54 +02:00
{%- endif -%}
</ td >
2021-05-16 14:18:42 +02:00
< td class = "response-time" >
2021-05-19 11:28:57 +02:00
{%- if engine_stat.total is not none -%}
2021-05-16 13:16:44 +02:00
< div class = "bar-chart-value" > {{- engine_stat.total | round(1) -}}</ div > {{- "" -}}
2021-05-17 17:56:18 +02:00
< div class = "bar-chart-graph" aria-labelledby = "{{engine_stat.name}}_time" aria-hidden = "true" >
2021-05-19 11:28:57 +02:00
{% if engine_stat.http is not none and engine_stats.max_time %}< div class = "bar-chart-serie1 bar{{ (100 * engine_stat.http / engine_stats.max_time)|round }}" ></ div > {%- endif -%}
{% if engine_stat.processing is not none and engine_stats.max_time %}< div class = "bar-chart-serie2 bar{{ (100 * engine_stat.processing / engine_stats.max_time)|round }}" ></ div > {%- endif -%}
2021-05-17 17:56:18 +02:00
</ div >
2021-04-23 11:01:54 +02:00
< div class = "engine-tooltip" role = "tooltip" id = "{{engine_stat.name}}_time" > {{- "" -}}
< table >
< tr >
< th scope = "col" ></ th >
< th scope = "col" > {{ _('Total') }}</ th >
< th scope = "col" > {{ _('HTTP') }}</ th >
< th scope = "col" > {{ _('Processing') }}</ th >
</ tr >
< tr >
< th scope = "col" > {{ _('Median') }}</ th >
< td > {{ engine_stat.total }}</ td >
2021-05-19 11:28:57 +02:00
< td > {{ engine_stat.http or ''}}</ td >
2021-04-23 11:01:54 +02:00
< td > {{ engine_stat.processing }}</ td >
</ tr >
< tr >
< th scope = "col" > {{ _('P80') }}</ th >
< td > {{ engine_stat.total_p80 }}</ td >
2021-05-19 11:28:57 +02:00
< td > {{ engine_stat.http_p80 or '' }}</ td >
2021-04-23 11:01:54 +02:00
< td > {{ engine_stat.processing_p80 }}</ td >
</ tr >
< tr >
< th scope = "col" > {{ _('P95') }}</ th >
< td > {{ engine_stat.total_p95 }}</ td >
2021-05-19 11:28:57 +02:00
< td > {{ engine_stat.http_p95 or '' }}</ td >
2021-04-23 11:01:54 +02:00
< td > {{ engine_stat.processing_p95 }}</ td >
</ tr >
</ table >
</ div >
{%- endif -%}
</ td >
2021-05-16 14:18:42 +02:00
< td class = "engine-reliability" > {{ engine_reliabilities.get(engine_stat.name, {}).get('reliablity') }}</ td >
2021-04-23 11:01:54 +02:00
</ tr >
{% endfor %}
</ table >
{% endif %}
2021-04-23 21:08:48 +02:00
< div >
{% if selected_engine_name %}
{% for secondary in [False, True] %}
{% set ns = namespace(first=true) %}
{% for error in engine_reliabilities[selected_engine_name].errors %}
{% if secondary == error.secondary %}
{% if ns.first %}
{% set ns.first = false %}
< h3 > {% if secondary %}{{ _('Warnings') }}{% else %}{{ _('Errors and exceptions') }}{% endif %}</ h3 >
{% endif %}
2021-05-16 14:18:42 +02:00
< table class = "engine-error" >
< tbody >
2021-04-23 21:08:48 +02:00
< tr >
{%- if error.exception_classname -%}
2021-05-16 14:18:42 +02:00
< th scope = "row" class = "engine-error-type" > {{ _('Exception') }}</ th >< td > {{ error.exception_classname }}</ td >
2021-04-23 21:08:48 +02:00
{%- elif error.log_message -%}
2021-05-16 14:18:42 +02:00
< th scope = "row" class = "engine-error-type" > {{ _('Message') }}</ th >< td > {{ error.log_message }}</ td >
2021-04-23 21:08:48 +02:00
{%- endif -%}
2021-05-16 14:18:42 +02:00
< th scope = "row" class = "engine-error-type" > {{ _('Percentage') }}</ th >< td class = "engine-error-type" > {{ error.percentage }}</ td >
2021-04-23 21:08:48 +02:00
</ tr >
{% if error.log_parameters and error.log_parameters != (None, None, None) %}< tr >< th scope = "row" > {{ _('Parameter') }}</ th > {{- '' -}}
< td colspan = "3" >
{%- for param in error.log_parameters -%}
2021-05-16 14:18:42 +02:00
< span class = "log_parameters" > {{ param }}</ span >
2021-04-23 21:08:48 +02:00
{%- endfor -%}
</ td >
</ tr >
{% endif %}
< tr >< th scope = "row" > {{ _('Filename') }}</ th >< td colspan = "3" > {{ error.filename }}:{{ error.line_no }}</ td ></ tr >
< tr >< th scope = "row" > {{ _('Function') }}</ th >< td colspan = "3" > {{ error.function }}</ td ></ tr >
< tr >< th scope = "row" > {{ _('Code') }}</ th >< td colspan = "3" > {{ error.code }}</ td ></ tr >
</ tbody >
</ table >
{% endif %}
{% endfor %}
{% endfor %}
{% if engine_reliabilities[selected_engine_name].checker %}
< h3 > {{ _('Checker') }}</ h3 >
< table >
< tr >
2021-05-16 14:18:42 +02:00
< th scope = "col" class = "failed-test" > {{ _('Failed test') }}</ th >
2021-04-23 21:08:48 +02:00
< th scope = "col" > {{ _('Comment(s)') }}</ th >
</ tr >
{% for test_name, results in engine_reliabilities[selected_engine_name].checker.items() %}
< tr >
< td > {{ test_name }}</ td >
< td >
{% for r in results %}< p > {{ r }}</ p > {% endfor %}
</ td >
</ tr >
{% endfor %}
</ table >
{% endif %}
2021-07-18 15:38:52 +02:00
{{ new_issue(selected_engine_name, engine_reliabilities[selected_engine_name]) }}
2021-04-23 21:08:48 +02:00
{% endif %}
</ div >
2017-02-12 15:06:01 +01:00
{% endblock %}