Skip to content

Commit

Permalink
feat: add menu class
Browse files Browse the repository at this point in the history
  • Loading branch information
Thungghuan committed Oct 8, 2022
1 parent c33fe32 commit af1e2e7
Showing 1 changed file with 127 additions and 73 deletions.
200 changes: 127 additions & 73 deletions cli/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,107 +3,161 @@
from cli.console import clear, reset_console
from cli.token import load_token
from bus import Bus
from enum import Enum

def check_reserve(bus: Bus):
tickets = bus.list_reserve(status=1)["list"]
ticket_choices = []

for idx, bus in enumerate(tickets):
ticket_choices.append(
{
"name": "{}. {} {}".format(idx + 1, bus["ruteName"], bus["startTime"]),
"value": idx,
}
)
class MenuState(Enum):
START = 1
RESERVE_BUS = 2
CHECK_RESERVE = 3
QUIT = 4

if len(ticket_choices) > 0:
choice = questionary.select(
"请选择班次:",
choices=ticket_choices,
).ask()

print(choice)
else:
print("没有找到预约的校巴哦")
class Menu:
state: MenuState

def __init__(self) -> None:
self.state = MenuState.START

def reserve_bus(bus: Bus):
campus = ["广州国际校区", "大学城校区", "五山校区"]
reset_console()
self.token = load_token()
self.bus = Bus(self.token)

start_campus = questionary.select("请选择起点", choices=campus).ask()
end_campus = questionary.select(
"请选择终点", choices=list(filter(lambda x: x != start_campus, campus))
).ask()
def run(self):
self.start_menu()

today = datetime.today().strftime("%Y/%m/%d")
date = questionary.text("请输入查询日期,格式为:yyyy/mm/dd".format(today), default=today).ask()
def start_menu(self):
reset_console()

bus_list = bus.get_bus_list(start_campus, end_campus, date)
bus_choices = []
menu = ["预约校巴", "查看已预约校巴", "退出"]
choice_state = [
MenuState.RESERVE_BUS,
MenuState.CHECK_RESERVE,
MenuState.QUIT,
]

if len(bus_list) > 0:
for idx, bus in enumerate(bus_list):
bus_choices.append(
menu_choices = []
for idx, choice in enumerate(menu):
menu_choices.append(
{
"name": "{}. {}-{}".format(
idx + 1, bus["startDate"], bus["endDate"]
),
"name": "({}) {}".format(idx + 1, choice),
"value": idx,
"disabled": bus["tickets"] == 0,
}
)

bus_idx = questionary.select(
"请选择班次(灰色为被预约完的班次):",
choices=bus_choices,
style=questionary.Style(
[
("disabled", "#858585 italic"),
]
),
choice = questionary.select(
"请选择功能:",
choices=menu_choices,
).ask()

reset_console()
print(bus_list[bus_idx])
print(menu[choice])
self.change_state(choice_state[choice])

else:
print("{}已经没有校巴了".format(date))
def change_state(self, state: MenuState):
self.state = state

match state:
case MenuState.START:
self.start_menu()
case MenuState.RESERVE_BUS:
self.reserve_bus()
case MenuState.CHECK_RESERVE:
self.check_reserve()
case MenuState.QUIT:
self.quit()

def quit():
clear()
print("88")
def reserve_bus(self):
campus = ["广州国际校区", "大学城校区", "五山校区"]

start_campus = questionary.select("请选择起点", choices=campus).ask()
end_campus = questionary.select(
"请选择终点", choices=list(filter(lambda x: x != start_campus, campus))
).ask()

def main():
reset_console()
today = datetime.today().strftime("%Y/%m/%d")
date = questionary.text(
"请输入查询日期,格式为:yyyy/mm/dd".format(today), default=today
).ask()

bus_list = self.bus.get_bus_list(start_campus, end_campus, date)
bus_choices = []

if len(bus_list) > 0:
for idx, bus in enumerate(bus_list):
bus_choices.append(
{
"name": "{}. {}-{}".format(
idx + 1, bus["startDate"], bus["endDate"]
),
"value": idx,
"disabled": bus["tickets"] == 0,
}
)

bus_idx = questionary.select(
"请选择班次(灰色为被预约完的班次):",
choices=bus_choices,
style=questionary.Style(
[
("disabled", "#858585 italic"),
]
),
).ask()

print(bus_list[bus_idx])

else:
print("{}已经没有校巴了".format(date))

self.back_main_menu(True)

def check_reserve(self):
tickets = self.bus.list_reserve(status=1)["list"]
ticket_choices = []

for idx, bus in enumerate(tickets):
ticket_choices.append(
{
"name": "{}. {} {}".format(
idx + 1, bus["ruteName"], bus["startTime"]
),
"value": idx,
}
)

token = load_token()
bus = Bus(token)
if len(ticket_choices) > 0:
choice = questionary.select(
"请选择班次:",
choices=ticket_choices,
).ask()

reset_console()
print(choice)
else:
print("没有找到预约的校巴哦")

menu = ["查看已预约校巴", "预约校巴", "退出"]
menu_choices = []
self.back_main_menu(True)

function_list = [check_reserve, reserve_bus, quit]
def quit(self):
print("88")

for idx, choice in enumerate(menu):
menu_choices.append(
{
"name": "({}). {}".format(idx + 1, choice),
"value": idx,
}
)
def back_main_menu(self, last_page=False):
if not last_page:
choices = [
{"name": "返回主菜单", "value": MenuState.START},
{"name": "退出", "value": MenuState.QUIT},
]
else:
choices = [
{"name": "返回主菜单", "value": MenuState.START},
{"name": "重新选择", "value": self.state},
{"name": "退出", "value": MenuState.QUIT},
]

choice = questionary.select(
"请选择功能:",
choices=menu_choices,
).ask()
choice = questionary.select("请选择下一步操作", choices=choices).ask()

print(menu[choice])
function_list[choice](bus)
self.change_state(choice)


if __name__ == "__main__":
main()
def main():
menu = Menu()
menu.run()

0 comments on commit af1e2e7

Please sign in to comment.