-
Notifications
You must be signed in to change notification settings - Fork 0
/
crispy_dashboard.py
86 lines (61 loc) · 2.07 KB
/
crispy_dashboard.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import kivy
kivy.require('1.10.1')
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.listview import ListView
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput
from crispy_event_service import CrispyEventService
from kivy.lang import Builder
from kivy.uix.recycleview import RecycleView
Builder.load_string('''
<CustButton@Button>:
font_size: 24
size: 200, 100
size_hint: None, None
pos_hint: {'center_x': 0.5}
<EventScreen>:
id: eventscreen
events: events
BoxLayout:
spacing: 10
padding: 10
orientation: 'vertical'
CustButton:
text: "Refresh"
on_press: eventscreen.button_refresh_events()
Widget:
RecycleView:
id: events
viewclass: 'Label'
RecycleBoxLayout:
default_size: None, dp(56)
default_size_hint: 1, None
size_hint_y: None
height: self.minimum_height
orientation: 'vertical'
''')
class EventScreen(BoxLayout):
def __init__(self, **kwargs):
super(EventScreen, self).__init__(**kwargs)
self.crispy = CrispyEventService()
self.build_events(self.crispy.get_all_stored_time_series_events)
for date, events in self.crispy.get_all_stored_time_series_events().items():
print("{}:".format(date))
for event in events:
print(" {}".format(event.data['summary']))
def button_refresh_events(self):
self.build_events(self.crispy.refresh_10_days_of_events)
def build_events(self, event_yielding_method):
self.events.data = []
for date, events in event_yielding_method().items():
self.events.data.append({'text': date})
for event in events:
self.events.data.append({'text': event.get_display_description()})
class CrispyDashboard(App):
def build(self):
return EventScreen()
if __name__ == '__main__':
CrispyDashboard().run()