summaryrefslogtreecommitdiff
path: root/searx/templates
diff options
context:
space:
mode:
authorAlexandre Flament <alex@al-f.net>2021-04-24 07:02:52 +0200
committerGitHub <noreply@github.com>2021-04-24 07:02:52 +0200
commit3cdd6a6a504dd283e2afabaf903b2c8c9a2cc286 (patch)
treeda863c43f3632a6f6d82dc6d32654693a5b96c9c /searx/templates
parent461c6fb21eb3f63c5b025724a0b9e90b41d42a71 (diff)
parent7032f7521c344592dc68f89027c98cdec46d7055 (diff)
Merge pull request #12 from searxng/metrics-stats-page
[mod] update /stats
Diffstat (limited to 'searx/templates')
-rw-r--r--searx/templates/oscar/stats.html114
-rw-r--r--searx/templates/simple/stats.html100
2 files changed, 167 insertions, 47 deletions
diff --git a/searx/templates/oscar/stats.html b/searx/templates/oscar/stats.html
index 0573bf65f..b83714020 100644
--- a/searx/templates/oscar/stats.html
+++ b/searx/templates/oscar/stats.html
@@ -1,45 +1,97 @@
{% extends "oscar/base.html" %}
-{% block styles %}
- <link rel="stylesheet" href="{{ url_for('static', filename='css/charts.min.css') }}" type="text/css" />
- <style>
- #engine-times {
- --labels-size: 20rem;
- }
- #engine-times th {
- text-align: right;
- }
- </style>
-{% endblock %}
{% block title %}{{ _('stats') }} - {% endblock %}
+
+{%- macro th_sort(column_order, column_name) -%}
+ {% if column_order==sort_order %}
+ {{ column_name }} {{ icon('chevron-down') }}
+ {% else %}
+ <a href="{{ url_for('stats', sort=column_order) }}">{{ column_name }}
+ {% endif %}
+{%- endmacro -%}
+
{% block content %}
<div class="container-fluid">
<h1>{{ _('Engine stats') }}</h1>
<div class="row">
- {% for stat_name,stat_category in stats %}
- <div class="col-xs-12 col-sm-12 col-md-6">
- <h3>{{ stat_name }}</h3>
- <div class="container-fluid">
- {% for engine in stat_category %}
- <div class="row">
- <div class="col-sm-4 col-md-4">{{ engine.name }}</div>
- <div class="col-sm-8 col-md-8">
- <div class="progress">
- <div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="{{ '%i'|format(engine.avg) }}" aria-valuemin="0" aria-valuemax="100" style="width: {{ engine.percentage }}%;">
- {{ '%.02f'|format(engine.avg) }}
- </div>
- </div>
+ <div class="col-xs-12 col-sm-12 col-md-12">
+ <div class="table-responsive">
+ {% if not engine_stats.get('time') %}
+ <div class="col-sm-12 col-md-12">
+ {% include 'oscar/messages/no_data_available.html' %}
</div>
- </div>
- {% endfor %}
- {% if not stat_category %}
- <div class="col-sm-12 col-md-12">
- {% include 'oscar/messages/no_data_available.html' %}
- </div>
+ {% else %}
+ <table class="table table-hover table-condensed table-striped">
+ <tr>
+ <th scope="col" style="width:20rem;">{{ th_sort('name', _("Engine name")) }}</th>
+ <th scope="col" style="width:7rem; text-align: right;">{{ th_sort('score', _('Scores')) }}</th>
+ <th scope="col">{{ th_sort('result_count', _('Result count')) }}</th>
+ <th scope="col">{{ th_sort('time', _('Response time')) }}</th>
+ <th scope="col" style="text-align: right;">{{ th_sort('reliability', _('Reliability')) }}</th>
+ </tr>
+ {% for engine_stat in engine_stats.get('time', []) %}
+ <tr>
+ <td>{{ engine_stat.name }}</td>
+ <td style="text-align: right;">
+ {% if engine_stat.score %}
+ <span aria-labelledby="{{engine_stat.name}}_score" >{{ engine_stat.score|round(1) }}</span>
+ <div class="engine-tooltip text-left" role="tooltip" id="{{engine_stat.name}}_score">{{- "" -}}
+ <p>{{ _('Scores per result') }}: {{ engine_stat.score_per_result | round(3) }}</p>
+ </div>
+ {% endif %}
+ </td>
+ <td>
+ {%- if engine_stat.result_count -%}
+ <span class="stacked-bar-chart-value">{{- engine_stat.result_count | int -}}</span>{{- "" -}}
+ <span class="stacked-bar-chart" aria-hidden="true">{{- "" -}}
+ <span style="width: calc(max(2px, 100%*{{ (engine_stat.result_count / engine_stats.max_result_count )|round(3) }}))" class="stacked-bar-chart-serie1"></span>{{- "" -}}
+ </span>
+ {%- endif -%}
+ </td>
+ <td>
+ {%- if engine_stat.total -%}
+ <span class="stacked-bar-chart-value">{{- engine_stat.total | round(1) -}}</span>{{- "" -}}
+ <span class="stacked-bar-chart" aria-labelledby="{{engine_stat.name}}_time" aria-hidden="true">{{- "" -}}
+ <span style="width: calc(max(2px, 100%*{{ (engine_stat.http / engine_stats.max_time )|round(3) }}))" class="stacked-bar-chart-serie1"></span>{{- "" -}}
+ <span style="width: calc(100%*{{ engine_stat.processing / engine_stats.max_time |round(3) }})" class="stacked-bar-chart-serie2"></span>{{- "" -}}
+ </span>{{- "" -}}
+ <div class="engine-tooltip text-left" role="tooltip" id="{{engine_stat.name}}_time">{{- "" -}}
+ <table class="table table-striped">
+ <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>
+ <td>{{ engine_stat.http }}</td>
+ <td>{{ engine_stat.processing }}</td>
+ </tr>
+ <tr>
+ <th scope="col">{{ _('P80') }}</th>
+ <td>{{ engine_stat.total_p80 }}</td>
+ <td>{{ engine_stat.http_p80 }}</td>
+ <td>{{ engine_stat.processing_p80 }}</td>
+ </tr>
+ <tr>
+ <th scope="col">{{ _('P95') }}</th>
+ <td>{{ engine_stat.total_p95 }}</td>
+ <td>{{ engine_stat.http_p95 }}</td>
+ <td>{{ engine_stat.processing_p95 }}</td>
+ </tr>
+ </table>
+ </div>
+ {%- endif -%}
+ </td>
+ <td style="text-align: right;"> {{ engine_reliabilities.get(engine_stat.name, {}).get('reliablity') }}</td>
+ </tr>
+ {% endfor %}
+ </table>
{% endif %}
</div>
</div>
- {% endfor %}
</div>
</div>
{% endblock %}
diff --git a/searx/templates/simple/stats.html b/searx/templates/simple/stats.html
index 462ab4aa9..eecd88903 100644
--- a/searx/templates/simple/stats.html
+++ b/searx/templates/simple/stats.html
@@ -1,4 +1,15 @@
+{% from 'simple/macros.html' import icon %}
+
{% extends "simple/base.html" %}
+
+{%- macro th_sort(column_order, column_name) -%}
+ {% if column_order==sort_order %}
+ {{ column_name }} {{ icon('arrow-dropdown') }}
+ {% else %}
+ <a href="{{ url_for('stats', sort=column_order) }}">{{ column_name }}
+ {% endif %}
+{%- endmacro -%}
+
{% block head %} {% endblock %}
{% block content %}
@@ -6,20 +17,77 @@
<h2>{{ _('Engine stats') }}</h2>
-{% for stat_name,stat_category in stats %}
-<div class="left">
- <table>
- <tr colspan="3">
- <th>{{ stat_name }}</th>
- </tr>
- {% for engine in stat_category %}
- <tr>
- <td>{{ engine.name }}</td>
- <td>{{ '%.02f'|format(engine.avg) }}</td>
- <td class="percentage"><div style="width: {{ engine.percentage }}%">&nbsp;</div></td>
- </tr>
- {% endfor %}
- </table>
-</div>
-{% endfor %}
+{% if not engine_stats.get('time') %}
+{{ _('There is currently no data available. ') }}
+{% else %}
+<table style="max-width: 1280px; margin: 0 auto;">
+ <tr>
+ <th scope="col" style="width:20rem;">{{ th_sort('name', _("Engine name")) }}</th>
+ <th scope="col" style="width:7rem; text-align: right;">{{ th_sort('score', _('Scores')) }}</th>
+ <th scope="col">{{ th_sort('result_count', _('Result count')) }}</th>
+ <th scope="col">{{ th_sort('time', _('Response time')) }}</th>
+ <th scope="col" style="text-align: right;">{{ th_sort('reliability', _('Reliability')) }}</th>
+ </tr>
+ {% for engine_stat in engine_stats.get('time', []) %}
+ <tr>
+ <td>{{ engine_stat.name }}</td>
+ <td style="text-align: right;">
+ {% 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>
+ <td>
+ {%- if engine_stat.result_count -%}
+ <span class="stacked-bar-chart-value">{{- engine_stat.result_count | int -}}</span>{{- "" -}}
+ <span class="stacked-bar-chart" aria-hidden="true">{{- "" -}}
+ <span style="width: calc(max(2px, 100%*{{ (engine_stat.result_count / engine_stats.max_result_count )|round(3) }}))" class="stacked-bar-chart-serie1"></span>{{- "" -}}
+ </span>
+ {%- endif -%}
+ </td>
+ <td>
+ {%- if engine_stat.total -%}
+ <span class="stacked-bar-chart-value">{{- engine_stat.total | round(1) -}}</span>{{- "" -}}
+ <span class="stacked-bar-chart" aria-labelledby="{{engine_stat.name}}_time" aria-hidden="true">{{- "" -}}
+ <span style="width: calc(max(2px, 100%*{{ (engine_stat.http / engine_stats.max_time )|round(3) }}))" class="stacked-bar-chart-serie1"></span>{{- "" -}}
+ <span style="width: calc(100%*{{ engine_stat.processing / engine_stats.max_time |round(3) }})" class="stacked-bar-chart-serie2"></span>{{- "" -}}
+ </span>{{- "" -}}
+ <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>
+ <td>{{ engine_stat.http }}</td>
+ <td>{{ engine_stat.processing }}</td>
+ </tr>
+ <tr>
+ <th scope="col">{{ _('P80') }}</th>
+ <td>{{ engine_stat.total_p80 }}</td>
+ <td>{{ engine_stat.http_p80 }}</td>
+ <td>{{ engine_stat.processing_p80 }}</td>
+ </tr>
+ <tr>
+ <th scope="col">{{ _('P95') }}</th>
+ <td>{{ engine_stat.total_p95 }}</td>
+ <td>{{ engine_stat.http_p95 }}</td>
+ <td>{{ engine_stat.processing_p95 }}</td>
+ </tr>
+ </table>
+ </div>
+ {%- endif -%}
+ </td>
+ <td style="text-align: right;"> {{ engine_reliabilities.get(engine_stat.name, {}).get('reliablity') }}</td>
+ </tr>
+ {% endfor %}
+</table>
+{% endif %}
+
{% endblock %}