MESReport / app.py
ChenyuRabbitLove's picture
feat: add corresponded flow to renfer user info
9dae054
raw
history blame
3.63 kB
import json
import gradio as gr
from theme import Seafoam
from utils.utils import (
get_content,
get_player_partners,
get_player_badges,
get_player_adventure_logs_html,
get_player_achievements,
get_current_story,
get_player_nickname,
)
seafoam = Seafoam()
def get_player_info(player_backend_user_id):
with open("data.json", "r", encoding="utf-8") as file:
player_info = json.load(file)
return player_info[player_backend_user_id]
# start of gradio interface
with gr.Blocks(theme=seafoam, css=get_content("css/style.css")) as demo:
player_info = gr.State()
with gr.Row():
with gr.Column(
scale=1,
):
pet_description = gr.Markdown("# 夥伴", elem_id="pet_avatar_description")
pet_gallery = gr.Gallery(
[],
label="夥伴",
preview=False,
elem_id="pet_gallery",
columns=30,
height=200,
)
badge_description = gr.Markdown("# 徽章", elem_id="badge_avatar_description")
badge_gallery = gr.Gallery(
[],
label="徽章",
preview=False,
elem_id="badge_gallery",
columns=30,
height=200,
)
with gr.Column(scale=1, elem_id="player_avatar_container"):
avatar = gr.Gallery(
["medias/avatar.png", "medias/avatar2.png"],
preview=True,
elem_id="player_avatar",
)
avatar_description = gr.Markdown(
"# 光束守護者", elem_id="player_avatar_description"
)
with gr.Column(scale=1):
with gr.Column(elem_id="adventure_container"):
adventure_description = gr.Markdown("# 冒險階段", elem_id="adventure_description")
adventure = gr.Slider(
value=0,
show_label=False,
interactive=False,
elem_id="adventure_slider",
info="",
)
achievements_description = gr.Markdown(
"# 達成成就", elem_id="achievements_description"
)
achievements = gr.HighlightedText(
value=[],
elem_classes="achievements",
color_map={
"完成": "green",
"未完成": "red",
},
)
with gr.Row():
html = get_content("htmls/adventure_blank.html")
adventure_log = gr.HTML(html, label="Adventure Log", elem_id="adventure_log")
# handling player info
with gr.Row():
player_backend_id = gr.Textbox(
"", visible=True, elem_id="player_backend_id"
)
player_info_query_btn = gr.Button("Query", elem_id="trigger_button")
# actions when player login
player_info_query_btn.click(get_player_info, player_backend_id, player_info).then(
player_info_query_btn.click(get_player_partners, player_info, pet_gallery)).then(
player_info_query_btn.click(get_player_badges, player_info, badge_gallery)).then(
player_info_query_btn.click(get_player_adventure_logs_html, player_info, adventure_log)).then(
player_info_query_btn.click(get_player_achievements, player_info, achievements)).then(
player_info_query_btn.click(get_player_nickname, player_info, avatar_description)).then(
player_info_query_btn.click(get_current_story, None, adventure))
if __name__ == "__main__":
demo.launch()