Пример #1
0
def time_chart(user, weeks, period=1):
    """Get information from a specified interval."""

    date_range = weeks * 7 // period
    period = timedelta(days=period)

    # 'now' is technically tomorrow at 0:00, so that today's smokes have
    # somewhere to go.
    now = datetime.today().replace(hour=0, minute=0, second=0, microsecond=0) \
        + timedelta(days=1)
    past = now - timedelta(weeks=weeks)

    data = DBSession.query(Cigarette).filter_by(user=user.user_name) \
                                     .filter(Cigarette.date >= past).all()
    # pre-fill the dictionary with zeroes
    freq_data = {(past + x*period): 0 for x in range(date_range)}
    for datum in data:
        distance = (datum.date - past).total_seconds() // period.total_seconds()
        freq_data[past + (int(distance) * period)] += 1

    if not freq_data:
        chart = 'No data to display.'
    else:
        chart = DateY(LineConfig())
        chart.add(user.display_name, sorted(freq_data.items()))
        chart = chart.render(is_unicode=True)
    return chart
Пример #2
0
 def test_datey():
     from datetime import datetime
     datey = DateY(show_dots=False)
     datey.add('1',
               [(datetime(2011, 12, 21), 10), (datetime(2014, 4, 8), 12),
                (datetime(2010, 2, 28), 2)])
     datey.add('2', [(12, 4), (219, 8), (928, 6)])
     datey.x_label_rotation = 25
     return datey.render_response()
Пример #3
0
def test_date():
    datey = DateY(truncate_label=1000)
    datey.add('dates', [(datetime(2013, 1, 2), 300),
                        (datetime(2013, 1, 12), 412),
                        (datetime(2013, 2, 2), 823),
                        (datetime(2013, 2, 22), 672)])

    q = datey.render_pyquery()

    assert list(map(lambda t: t.split(' ')[0],
                    q(".axis.x text").map(texts))) == [
                        '2013-01-02', '2013-01-13', '2013-01-25', '2013-02-05',
                        '2013-02-17'
                    ]

    datey.x_labels = [
        datetime(2013, 1, 1),
        datetime(2013, 2, 1),
        datetime(2013, 3, 1)
    ]

    q = datey.render_pyquery()
    assert list(map(lambda t: t.split(' ')[0],
                    q(".axis.x text").map(texts))) == [
                        '2013-01-01', '2013-02-01', '2013-03-01'
                    ]
Пример #4
0
    def test_datey():
        from datetime import datetime

        datey = DateY(show_dots=False)
        datey.add("1", [(datetime(2011, 12, 21), 10), (datetime(2014, 4, 8), 12), (datetime(2010, 2, 28), 2)])
        datey.add("2", [(12, 4), (219, 8), (928, 6)])
        datey.x_label_rotation = 25
        return datey.render_response()
Пример #5
0
 def test_datexy():
     from datetime import datetime, date, timedelta
     datey = DateY()
     datey.add('1',
               [(datetime(2011, 12, 21), 10), (datetime(2014, 4, 8), 12),
                (datetime(2010, 2, 28), 2)])
     datey.add(
         '2',
         map(lambda t: (date.today() + timedelta(days=t[0]), t[1]),
             [(12, 4), (219, 8), (928, 6)]))
     datey.x_label_rotation = 25
     return datey.render_response()
Пример #6
0
def test_date():
    datey = DateY(truncate_label=1000)
    datey.add('dates', [
        (datetime(2013, 1, 2), 300),
        (datetime(2013, 1, 12), 412),
        (datetime(2013, 2, 2), 823),
        (datetime(2013, 2, 22), 672)
    ])

    q = datey.render_pyquery()

    assert list(
        map(lambda t: t.split(' ')[0],
            q(".axis.x text").map(texts))) == [
        '2013-01-02',
        '2013-01-13',
        '2013-01-25',
        '2013-02-05',
        '2013-02-17'
    ]

    datey.x_labels = [
        datetime(2013, 1, 1),
        datetime(2013, 2, 1),
        datetime(2013, 3, 1)
    ]

    q = datey.render_pyquery()
    assert list(
        map(lambda t: t.split(' ')[0],
            q(".axis.x text").map(texts))) == [
        '2013-01-01',
        '2013-02-01',
        '2013-03-01'
    ]
Пример #7
0
def graph_uptime(record_files):
    chart = DateY(BaseConfig)
    for name, record_list in sort_domains(record_files.items()):
        values = []
        up, down = timedelta(), timedelta()
        last = None
        for record in record_list:
            if last:
                down += record[1] - last
                values.append((record[1],
                               100 * up.total_seconds() /
                               (up+down).total_seconds()))
            else:
                values.append((record[1], 100))
            last = record[1] + record[0]
            up += record[0]
            values.append((record[1] + record[0],
                           100 * up.total_seconds() /
                           (up+down).total_seconds()))

        chart.add(name, values)
    return chart.render()
Пример #8
0
 def test_datexy():
     from datetime import datetime, date, timedelta
     datey = DateY()
     datey.add('1', [
         (datetime(2011, 12, 21), 10),
         (datetime(2014, 4, 8), 12),
         (datetime(2010, 2, 28), 2)
     ])
     datey.add('2', map(
         lambda t: (date.today() + timedelta(days=t[0]), t[1]),
         [(12, 4), (219, 8), (928, 6)]))
     datey.x_label_rotation = 25
     return datey.render_response()
Пример #9
0
def test_date_overflow():
    datey = DateY(truncate_label=1000)
    datey.add('dates', [1, 2, -1000000, 5, 100000000])
    assert datey.render_pyquery()
Пример #10
0
 def test_datey_single():
     graph = DateY(interpolate='cubic')
     graph.add('Single', [(datetime.now(), 1)])
     return graph.render_response()
Пример #11
0
 def test_datey_single():
     graph = DateY(interpolate='cubic')
     graph.add('Single', [(datetime.now(), 1)])
     return graph.render_response()
Пример #12
0
def test_date_overflow():
    datey = DateY(truncate_label=1000)
    datey.add('dates', [1, 2, -1000000, 5, 100000000])
    assert datey.render_pyquery()
Пример #13
0
 def dessiner_graph_global(self):
     graph = DateY(style=style.BlueStyle)
     graph.title = "Performances générales de %s %s" % (prenom, nom)
     graph.add ([ (P.course.date, P.get_vitesse_generale) for P in performances ])
     return graph
Пример #14
0
 def dessiner_graph_global(self):
     graph = DateY(style=BlueStyle, explicit_size=True)
     #graph.title = "Performances générales de %s %s" % (self.prenom, self.nom)
     graph.add ("Vitesse", [ (P.course.date, P.get_vitesse_generale()) for P in self.performances.all() ])
     return graph