source: flowtimer/flowtimer/Phase.py@ f2a2a82

guix
Last change on this file since f2a2a82 was df0449c, checked in by Enrico Schwass <ennoausberlin@…>, 9 months ago

fix one remaining unit test

  • Property mode set to 100644
File size: 2.1 KB
Line 
1import json
2
3
4class Phase:
5
6 """
7 This class is a representation of a single phase inside a timer
8 """
9
10 @classmethod
11 def default(cls):
12 return cls('Default', 30)
13
14 def __init__(self, title, ticks):
15 """
16 creates the variables associated with that class
17
18 :type title: string
19 :param title: Name of phase
20
21 :type ticks: int
22 :param ticks: ticks in seconds
23 """
24
25 self.title = title
26 self.initial_ticks = ticks
27 self._state = "initial"
28 self._ticks_left = ticks
29
30 @property
31 def initial_repetitions(self):
32 return 1
33
34 @property
35 def state(self):
36 return self._state
37
38 @property
39 def ticks_left(self):
40 return self._ticks_left
41
42 def to_json(self):
43 return json.dumps({"title": self.title, "initial_ticks": self.initial_ticks})
44
45 def __str__(self):
46 """
47 Human readable representation of all attributes
48
49 :return: human readable representation of all attributes
50 :rtype: String
51 """
52
53 return ("Title:" + self.title + "\nTicks left=" +
54 str(self._ticks_left) + "\n" + str(self._state) + "\n")
55
56 def is_sequence(self):
57 return False
58
59 def abort(self):
60 self._state = "aborted"
61
62 def is_aborted(self):
63 return self.state == "aborted"
64
65 def start(self):
66 self._state = "running"
67
68 def reset(self):
69 self._ticks_left = self.initial_ticks
70 self._state = "initial"
71
72 def pause(self):
73 self._state = "paused"
74
75 def is_running(self):
76 return self._state == "running"
77
78 def is_terminated(self):
79 return (self.is_completed() or self.is_aborted())
80
81 def is_completed(self):
82 return self.ticks_left < 1
83
84 def is_paused(self):
85 return self._state == "paused"
86
87 def tick(self, ticks):
88 self.start()
89 result = self._ticks_left - ticks
90
91 if result < 1:
92 self._ticks_left = 0
93 self._state = "completed"
94 else:
95 self._ticks_left = result
96 return result
Note: See TracBrowser for help on using the repository browser.