def show_Remaining_Time(curr, end): """ :param curr: datetime.datetime object :param end: datetime.datetime object :return: """ time_Remaining = timeParser(str(end)) - timeParser(str(curr)) print("\rTime Remaining: %s" % str(time_Remaining).split(".")[0], end="", flush=True)
def in_timer_behavior(self): """ :param curr: datetime.datetime object :param end: datetime.datetime object :return: """ curr = datetime.now().time() time_Remaining = timeParser(str(self.end_time)) - timeParser(str(curr)) print('\rTime Remaining: %s' % str(time_Remaining).split('.')[0], end='', flush=True)
def dynamic_Pomo_Scheme(execute_Timetable, execute_Modetable, pomo_Modes, pomo_Params): """ According to Current_Time. Search the whole Pomo Period (all Pomo_Modes) the current time in. The recalculate the period use the current time as start point. Original Scheme (the one stored in JSON file) will be replaced. Todo: should save changes in the JSON file again. :param execute_Modetable: :param execute_Timetable: :return: In_place modify Modetable and Timetable. No return. """ current_Time = datetime.now().time() len_Scheme = len(execute_Timetable) for period_index in range(len_Scheme): period_end_time = execute_Timetable[period_index][1] if current_Time <= period_end_time: if execute_Modetable[period_index] in pomo_Modes: # Find continuous Pomo Modes start-end time for i in range(period_index, len_Scheme): if execute_Modetable[i] not in pomo_Modes: end_time = execute_Timetable[i][0] # Start time of this period pomo_end_at_period = i # Recalculate Pomo timetable # end_time now is datetime.time() object # argument of pomo_Algo require datetime.datetime() object end_time = timeParser(str(end_time)) start_time = timeParser(str(current_Time)) execute_Plan = pomo_Algo(start_time, end_time, *pomo_Modes, **pomo_Params) # replace previous Pomo Modes Period replace_deprecated_Pomo_Period(execute_Plan, period_index, pomo_end_at_period, execute_Timetable, execute_Modetable) break break
def read_Scheme_JSON(name, mode_Type): """ :param name: :param mode_Type: :return: execute_Timetable: 2D List of datetime.time object execute_Modetable: List of mode strings. """ with open(project_path + "/Schemes/Daily_Schemes/" + name + "." + mode_Type) as openFile: Scheme = json.load(openFile) execute_Timetable = [[timeParser(i).time() for i in j[:-1]] for j in Scheme['Timetable']] execute_Modetable = [i[-1] for i in Scheme['Timetable']] return execute_Timetable, execute_Modetable
def read_Scheme_JSON(name, mode_Type, is_Dynamic_Scheme): """ :param name: :param mode_Type: :return: execute_Timetable: 2D List of datetime.time object execute_Modetable: List of mode strings. """ with open(project_path + "/Schemes/Daily_Schemes/" + name + "." + mode_Type) as openFile: Scheme = json.load(openFile) execute_Timetable = [[timeParser(i).time() for i in j[:-1]] for j in Scheme['Timetable']] execute_Modetable = [i[-1] for i in Scheme['Timetable']] if is_Dynamic_Scheme: scheme_Params = Scheme['Configurations']['Scheme_Settings']['Pomo_Params'] dynamic_Pomo_Scheme(execute_Timetable, execute_Modetable, pomo_Modes, scheme_Params) return execute_Timetable, execute_Modetable