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
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()
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' ]
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()
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()
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' ]
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()
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()
def test_date_overflow(): datey = DateY(truncate_label=1000) datey.add('dates', [1, 2, -1000000, 5, 100000000]) assert datey.render_pyquery()
def test_datey_single(): graph = DateY(interpolate='cubic') graph.add('Single', [(datetime.now(), 1)]) return graph.render_response()
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
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