Bläddra i källkod

[enh] oscar theme: display engine response times in the preferences

Alexandre Flament 10 år sedan
förälder
incheckning
d4d2dd9cb3
2 ändrade filer med 55 tillägg och 9 borttagningar
  1. 36
    9
      searx/templates/oscar/preferences.html
  2. 19
    0
      searx/webapp.py

+ 36
- 9
searx/templates/oscar/preferences.html Visa fil

@@ -134,21 +134,48 @@
134 134
                     <div class="tab-pane{% if loop.first %} active{% endif %} active_if_nojs" id="tab_engine_{{ categ|replace(' ', '_') }}">
135 135
                         <div class="container-fluid">
136 136
                         <fieldset>
137
+                          <div class="table-responsive">
138
+			  <table class="table table-hover table-condensed table-striped">
139
+			        <tr>
140
+                                    {% if not rtl %}
141
+				    <th>{{ _("Allow") }}</th>
142
+				    <th>{{ _("Engine name") }}</th>
143
+				    <th>{{ _("Shortcut") }}</th>
144
+				    <th>{{ _("SafeSearch") }}</th>
145
+				    <th>{{ _("Avg. time") }}</th>
146
+				    <th>{{ _("Max time") }}</th>
147
+                                    {% else %}
148
+				    <th>{{ _("Max time") }}</th>
149
+				    <th>{{ _("Avg. time") }}</th>
150
+				    <th>{{ _("SafeSearch") }}</th>
151
+				    <th>{{ _("Shortcut") }}</th>
152
+				    <th>{{ _("Engine name") }}</th>
153
+				    <th>{{ _("Allow") }}</th>
154
+                                    {% endif %}
155
+                                </tr>
137 156
                         {% for search_engine in engines_by_category[categ] %}
138 157
                             {% if not search_engine.private %}
139
-                                <div class="row">
158
+                                <tr>
140 159
                                     {% if not rtl %}
141
-                                    <div class="col-xs-6 col-sm-4 col-md-4">{{ search_engine.name }} ({{ shortcuts[search_engine.name] }})</div>
160
+                                    <td>{{ checkbox_toggle('engine_' + search_engine.name|replace(' ', '_') + '__' + categ|replace(' ', '_'), (search_engine.name, categ) in blocked_engines) }}</td>
161
+                                    <th>{{ search_engine.name }}</th>
162
+				    <td>{{ shortcuts[search_engine.name] }}</td>
163
+				    <td><input type="checkbox" {{ "checked" if search_engine.safesearch==True else ""}} readonly="readonly" disabled="disabled"></td>
164
+				    <td class="{{ 'danger' if stats[search_engine.name]['warn_time'] else '' }}">{{ 'N/A' if stats[search_engine.name].time==None else stats[search_engine.name].time }}</td>
165
+				    <td class="{{ 'danger' if stats[search_engine.name]['warn_timeout'] else '' }}">{{ search_engine.timeout }}</td>
166
+                                    {% else %}
167
+				    <td class="{{ 'danger' if stats[search_engine.name]['warn_timeout'] else '' }}">{{ search_engine.timeout }}</td>
168
+				    <td class="{{ 'danger' if stats[search_engine.name]['warn_time'] else '' }}">{{ 'N/A' if stats[search_engine.name].time==None else stats[search_engine.name].time }}</td>
169
+				    <td><input type="checkbox" {{ "checked" if search_engine.safesearch==True else ""}} readonly="readonly" disabled="disabled"></td>
170
+				    <td>{{ shortcuts[search_engine.name] }}</td>
171
+                                    <th>{{ search_engine.name }}</th>
172
+                                    <td>{{ checkbox_toggle('engine_' + search_engine.name|replace(' ', '_') + '__' + categ|replace(' ', '_'), (search_engine.name, categ) in blocked_engines) }}</td>
142 173
                                     {% endif %}
143
-                                    <div class="col-xs-6 col-sm-4 col-md-4">
144
-                                        {{ checkbox_toggle('engine_' + search_engine.name|replace(' ', '_') + '__' + categ|replace(' ', '_'), (search_engine.name, categ) in blocked_engines) }}
145
-                                    </div>
146
-                                    {% if rtl %}
147
-                                    <div class="col-xs-6 col-sm-4 col-md-4">{{ search_engine.name }} ({{ shortcuts[search_engine.name] }})&lrm;</div>
148
-                                    {% endif %}
149
-                                </div>
174
+                                </tr>
150 175
                             {% endif %}
151 176
                         {% endfor %}
177
+		          </table>
178
+                          </div>
152 179
                         </fieldset>
153 180
                         </div>
154 181
                     </div>

+ 19
- 0
searx/webapp.py Visa fil

@@ -623,6 +623,24 @@ def preferences():
623 623
         resp.set_cookie('theme', theme, max_age=cookie_max_age)
624 624
 
625 625
         return resp
626
+
627
+    # stats for preferences page
628
+    stats = {}
629
+
630
+    for c in categories:
631
+        for e in categories[c]:
632
+            stats[e.name] = {'time': None,
633
+                             'warn_timeout': False,
634
+                             'warn_time': False}
635
+            if e.timeout > settings['server']['request_timeout']:
636
+                stats[e.name]['warn_timeout'] = True
637
+
638
+    for engine_stat in get_engines_stats()[0][1]:
639
+        stats[engine_stat.get('name')]['time'] = round(engine_stat.get('avg'), 3)
640
+        if engine_stat.get('avg') > settings['server']['request_timeout']:
641
+            stats[engine_stat.get('name')]['warn_time'] = True
642
+    # end of stats
643
+
626 644
     return render('preferences.html',
627 645
                   locales=settings['locales'],
628 646
                   current_locale=get_locale(),
@@ -630,6 +648,7 @@ def preferences():
630 648
                   image_proxy=image_proxy,
631 649
                   language_codes=language_codes,
632 650
                   engines_by_category=categories,
651
+                  stats=stats,
633 652
                   blocked_engines=blocked_engines,
634 653
                   autocomplete_backends=autocomplete_backends,
635 654
                   shortcuts={y: x for x, y in engine_shortcuts.items()},