2021-04-23 11:01:54 +02:00
{% from 'simple/macros.html' import icon %}
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-04-23 11:01:54 +02:00
{{ column_name }} {{ icon('arrow-dropdown') }}
{% 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 %}