Spaces:
Build error
Build error
File size: 2,373 Bytes
83c7368 12ca36b 35153c2 84d8075 6a0f6c2 12ca36b 6a0f6c2 fe79a15 12ca36b 640dc7a fdda1da b1ee3a4 12ca36b ea36e3b 12ca36b fdda1da ea36e3b 12ca36b 0264353 12ca36b d03f5ec 0264353 102f4ad d03f5ec ea36e3b 640dc7a ea36e3b 4c8c6b4 fdda1da 4b7975c 7c17d65 35153c2 102f4ad 7e8fa36 102f4ad 77d952e 4c8c6b4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
import gradio as gr
from utils import duckdb_queries as dq
from utils.gradio import get_window_url_params
from utils.indicators import IndexGenerator
# Instantiate outside gradio app to avoid re-initializing GEE, which is slow
indexgenerator = IndexGenerator(indices=["NDWI", "Water", "Protected", "Habitat"])
with gr.Blocks() as demo:
with gr.Column():
m1 = gr.Plot()
with gr.Row():
project_name = gr.Dropdown([], label="Project", value="Select project")
start_year = gr.Number(value=2017, label="Start Year", precision=0)
end_year = gr.Number(value=2022, label="End Year", precision=0)
with gr.Row():
view_btn = gr.Button(value="Show project map")
calc_btn = gr.Button(value="Calculate!")
results_df = gr.Dataframe(
headers=["Year", "Project Name", "Score"],
datatype=["number", "str", "number"],
label="Scores by year",
)
calc_btn.click(
indexgenerator.calculate_score,
inputs=[start_year, end_year],
outputs=results_df,
)
view_btn.click(
fn=indexgenerator.show_project_map,
outputs=[m1],
)
def update_project_dropdown_list(url_params):
username = url_params.get("username", "default")
projects = dq.list_projects_by_author(author_id=username)
# Initialize the first project in the list
project_names = projects['name'].tolist()
default_project = project_names[0]
return gr.Dropdown.update(choices=project_names, value=default_project)
# Change the project name in the index generator object when the
# user selects a new project
project_name.change(
indexgenerator.set_project,
inputs=project_name
)
# Get url params
url_params = gr.JSON({"username": "default"}, visible=False, label="URL Params")
# Gradio has a bug
# For dropdown to update by demo.load, dropdown value must be called downstream
b1 = gr.Button("Hidden button that fixes bug.", visible=False)
b1.click(lambda x: x, inputs=project_name, outputs=[])
# Update project dropdown list on page load
demo.load(
fn=update_project_dropdown_list,
inputs=[url_params],
outputs=[project_name],
_js=get_window_url_params,
queue=False,
)
demo.launch()
|