forked from dymik739/modular-bot-framework-for-telegram
auto-schedule-pro-v2: add progress bar display for current lesson
This commit is contained in:
parent
48a106ce69
commit
8810d97e4c
@ -36,6 +36,9 @@ color_code_mapping = {
|
||||
}
|
||||
|
||||
|
||||
PROGRESS_BAR_LENGTH = 16
|
||||
|
||||
|
||||
# global variables
|
||||
module_path = ""
|
||||
|
||||
@ -174,6 +177,37 @@ def get_name_of_lesson_type(lesson_type):
|
||||
return lesson_types_to_strings[lesson_type]
|
||||
|
||||
|
||||
def make_progress_bar(start_datetime, total_bar_count):
|
||||
current_time = datetime.now()
|
||||
|
||||
seconds_elapsed = (current_time.hour - start_datetime.hour) * 3600 \
|
||||
+ (current_time.minute - start_datetime.minute) * 60 \
|
||||
+ (current_time.second - start_datetime.second)
|
||||
|
||||
total_seconds = 1 * 3600 + 30 * 60
|
||||
|
||||
percent_elapsed = max(min(seconds_elapsed / total_seconds, 1), 0)
|
||||
|
||||
if (current_time.day < start_datetime.day):
|
||||
percent_elapsed = 0
|
||||
elif (current_time.day > start_datetime.day):
|
||||
percent_elapsed = 1
|
||||
|
||||
bars_ticked = round(percent_elapsed * total_bar_count)
|
||||
bars_not_ticked = total_bar_count - bars_ticked
|
||||
|
||||
status_line = "[" + "#" * bars_ticked + "-" * bars_not_ticked + "]"
|
||||
|
||||
status_bar_text = f"{round(percent_elapsed*100)}%"
|
||||
|
||||
status_list_text_start_position = round((len(status_line) - len(status_bar_text))/2)
|
||||
|
||||
status_line_overlayed = (status_line[:status_list_text_start_position] + status_bar_text \
|
||||
+ status_line[status_list_text_start_position+len(status_bar_text):]).replace("-", "--")
|
||||
|
||||
return status_line_overlayed
|
||||
|
||||
|
||||
def generate_lesson_description(lesson, start_datetime, end_datetime, current_day, current_week, overrides={},
|
||||
custom_name_prefix="Назва", template="legacy-vibrant", force_date_at_top=False):
|
||||
|
||||
@ -224,6 +258,7 @@ def generate_lesson_description(lesson, start_datetime, end_datetime, current_da
|
||||
active_template = active_template.replace("%TYPE%", get_name_of_lesson_type(lesson['type']))
|
||||
active_template = active_template.replace("%NAME_PREFIX%", custom_name_prefix)
|
||||
active_template = active_template.replace("%COLOR_CODE%", get_color_code(lesson['type']))
|
||||
active_template = active_template.replace("%PROGRESS_BAR%", make_progress_bar(start_datetime, PROGRESS_BAR_LENGTH >> 1))
|
||||
|
||||
if ('nolink' not in lesson) or (not lesson['nolink']):
|
||||
active_template = active_template.replace("%LINK%", lesson['link'])
|
||||
@ -237,11 +272,17 @@ def generate_lesson_description(lesson, start_datetime, end_datetime, current_da
|
||||
return active_template
|
||||
|
||||
elif lesson.__class__ == list:
|
||||
total_result = load_template(template, "date")
|
||||
if not force_date_at_top:
|
||||
total_result = load_template(template, "date-progress")
|
||||
total_result = total_result.replace("%PROGRESS_BAR%", make_progress_bar(start_datetime, PROGRESS_BAR_LENGTH))
|
||||
else:
|
||||
total_result = load_template(template, "date")
|
||||
|
||||
human_readable_date = get_human_readable_date(start_datetime, end_datetime,
|
||||
current_day, current_week)
|
||||
total_result = total_result.replace("%DATE%", human_readable_date)
|
||||
|
||||
|
||||
for l in lesson:
|
||||
if "full" in overrides and overrides["full"]:
|
||||
active_template = load_template(template, "multiple")
|
||||
|
@ -0,0 +1,2 @@
|
||||
<i>%PROGRESS_BAR%</i>
|
||||
<b><u>%DATE%</u></b>:
|
@ -1,4 +1,4 @@
|
||||
<b>%NAME_PREFIX%</b>: %NAME% (%TYPE%)
|
||||
<b>Дата</b>: %DATE%
|
||||
<b>Дата</b>: %DATE% <i>%PROGRESS_BAR%</i>
|
||||
<b>Викладач</b>: %TEACHER%
|
||||
<b>Посилання</b>: %LINK%
|
||||
|
@ -0,0 +1,2 @@
|
||||
%PROGRESS_BAR%
|
||||
<u>%DATE%</u>:
|
@ -1,4 +1,4 @@
|
||||
%NAME_PREFIX%: %NAME% (%TYPE%)
|
||||
Дата: %DATE%
|
||||
Дата: %DATE% %PROGRESS_BAR%
|
||||
Викладач: %TEACHER%
|
||||
Посилання: %LINK%
|
||||
|
@ -0,0 +1,2 @@
|
||||
<i>%PROGRESS_BAR%</i>
|
||||
<b><u>%DATE%</u></b>:
|
@ -1,4 +1,4 @@
|
||||
<b>%NAME%</b> (%TYPE%)
|
||||
<i>Дата</i>: %DATE%
|
||||
<i>Дата</i>: %DATE% <i>%PROGRESS_BAR%</i>
|
||||
<i>Викладач</i>: %TEACHER%
|
||||
<i>Посилання</i>: %LINK%
|
||||
|
Loading…
x
Reference in New Issue
Block a user