Commits

Andy Mikhailenko committed eb99c6c

web, reporting: improved presentation of methodology-based hints.

Comments (0)

Files changed (2)

timetra/reporting/methodology.py

 :license: LGPL3
 
 """
+import datetime
+
 from timetra import storage
 
 
 def check_planning_after_sleep(facts):
     remainder = []
     after_sleep = None
+    sleep_fact = None
     for f in reversed(facts):
         if f.activity == 'sleeping':
+            sleep_fact = f
             after_sleep = reversed(remainder)
             break
         remainder.append(f)
     message = u'Please plan the day'
+    category = 'warning'
+    if sleep_fact:
+        if 60 * 30 < (datetime.datetime.now() - sleep_fact.end_time).total_seconds():
+            category = 'error'
     if after_sleep:
         if any(True for x in after_sleep if x.activity == 'sorting-tasks'):
             message = u'You seem to have planned the day, OK'
-    return message
+            category = 'success'
+    return message, category
 
 
 def analyse_day():

timetra/web/templates/dashboard.html

 {% block content %}
 
     <div class="row">
-        <div class="well">
-            <p>
-                <i class="icon-bell"></i>
-                {% if next_sleep.eta_is_negative %}
-                    Я думал, ты уже спишь ≈{{ format_delta(next_sleep.eta) }}, чтобы проснуться около {{ next_sleep.end.strftime('%H:%M') }}. Уверен, что не пора?
-                {% else %}
-                    Если
-                    <strong>
-                        {% if next_sleep.eta.total_seconds() > 60*60 %}
-                            через {{ format_delta(next_sleep.eta, '{hours}') }} ч.
-                        {% else %}
-                            в течение часа
-                        {% endif %}
-                    </strong>
-                    уснешь, проснешься около {{ approx_time(next_sleep.end) }} после {{ format_delta(next_sleep.duration, '{hours}') }}-часового сна.
-                {% endif %}
-                (См. <a href="{{ url_for('timetra.report_drift') }}">режим сна</a> и <a href="{{ url_for('timetra.report_predictions') }}">список предсказаний</a>)
-            </p>
+        <div class="alert alert-info">
+            <i class="icon-bell"></i>
+            {% if next_sleep.eta_is_negative %}
+                Я думал, ты уже спишь ≈{{ format_delta(next_sleep.eta) }}, чтобы проснуться около {{ next_sleep.end.strftime('%H:%M') }}. Уверен, что не пора?
+            {% else %}
+                Если
+                <strong>
+                    {% if next_sleep.eta.total_seconds() > 60*60 %}
+                        через {{ format_delta(next_sleep.eta, '{hours}') }} ч.
+                    {% else %}
+                        в течение часа
+                    {% endif %}
+                </strong>
+                уснешь, проснешься около {{ approx_time(next_sleep.end) }} после {{ format_delta(next_sleep.duration, '{hours}') }}-часового сна.
+            {% endif %}
+            (См. <a href="{{ url_for('timetra.report_drift') }}">режим сна</a> и <a href="{{ url_for('timetra.report_predictions') }}">список предсказаний</a>)
+        </div>
 
-            {% for message in methodology.analyse_day() %}
-                <p>{{ message }}</p>
-            {% endfor %}
-        </div>
+        {% for message, category in methodology.analyse_day() %}
+            <div class="alert alert-{{category}}">
+                {{ message }}
+            </div>
+        {% endfor %}
+
         <h2>Categories</h2>
         <dl class="dl-horizontal">
             {% for item in stats|reverse %}