MESReport / app.py
ChenyuRabbitLove's picture
feat: add player achievement render function
5784cf3
raw
history blame
3.55 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_achievement_logs_html,
)
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_gallery = gr.Gallery(
[
"medias/partner1.png",
"medias/partner2.png",
"medias/partner3.png",
"medias/partner4.png",
]
* 2,
label="夥伴",
preview=False,
elem_id="pet_gallery",
columns=30,
height=200,
)
pet_description = gr.Markdown("# 夥伴", elem_id="pet_avatar_description")
badge_gallery = gr.Gallery(
[
"medias/badge.png",
"medias/badge2.png",
"medias/badge3.png",
"medias/badge4.png",
]
* 2,
show_share_button=True,
label="徽章",
preview=False,
elem_id="badge_gallery",
columns=30,
height=200,
)
badge_description = gr.Markdown("# 徽章", elem_id="badge_avatar_description")
with gr.Column(scale=1):
avatar = gr.Gallery(
["medias/avatar.png", "medias/avatar2.png"],
preview=True,
elem_id="user_avatar",
)
avatar_description = gr.Markdown(
"# 光束守護者", elem_id="user_avatar_description"
)
with gr.Column(scale=1):
description = gr.Markdown("# 冒險階段", elem_id="adventure_description")
progress_bar_html = (
"<div style='max-width:100%; max-height:360px; overflow:auto'>"
+ get_content("htmls/progress_bar.html")
)
progress_bar = gr.HTML(
progress_bar_html,
)
stage_desc_html = (
"<div style='max-width:100%; max-height:360px; overflow:auto'>"
+ get_content("htmls/stage_desc.html")
)
stage_desc = gr.HTML(
stage_desc_html,
)
with gr.Row():
html = (
"<div style='max-width:100%; max-height:360px; overflow:auto'>"
+ get_content("htmls/achievement_blank.html")
)
f = gr.HTML(html, label="Achievement Log", elem_id="achievement_log")
# handling player info
with gr.Row():
player_backend_id = gr.Textbox(
"http://id.junyiacademy.org/d6317d299321450191dd5da599a48b3d", visible=False
)
player_info_query_btn = gr.Button("Query")
# actions when player login
player_info_query_btn.click(get_player_info, player_backend_id, player_info).then(
get_player_partners, player_info, pet_gallery
).then(get_player_badges, player_info, badge_gallery).then(
get_player_achievement_logs_html, player_info, f
)
if __name__ == "__main__":
demo.launch()