feat: about and contacts tabs
Browse files- app/{credits.py → about.py} +51 -11
- app/assets/icons/contact-information.png +0 -0
- app/assets/icons/fiwi.png +0 -0
- app/assets/icons/help.png +0 -0
- app/assets/icons/question.png +0 -0
- app/assets/icons/sdsc.png +0 -0
- app/contacts.py +110 -0
- app/{dead.py → dead_wounded/dead.py} +0 -0
- app/{wounded.py → dead_wounded/wounded.py} +0 -0
- app/gradio_test/test_selectdata_event.py +0 -16
- app/gradio_test/tests_delete_gallery.py +0 -25
- app/main.py +5 -1
- app/mode_advanced.py +20 -26
- app/mode_simple.py +20 -28
app/{credits.py → about.py}
RENAMED
|
@@ -1,27 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
credits_text = """
|
| 2 |
# Credits
|
| 3 |
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
- Isabelle Wethli (Institute for Fish and Wildlife Health, University of Bern)
|
| 7 |
-
- Dr. Mirjam Pewsner (Institute for Fish and Wildlife Health, University of Bern)
|
| 8 |
-
- Dr. Saskia Keller (Institute for Fish and Wildlife Health, University of Bern)
|
| 9 |
|
| 10 |
-
##
|
| 11 |
|
| 12 |
-
|
| 13 |
-
-
|
|
|
|
|
|
|
| 14 |
|
|
|
|
| 15 |
|
|
|
|
|
|
|
|
|
|
| 16 |
|
|
|
|
| 17 |
|
|
|
|
| 18 |
|
|
|
|
| 19 |
|
|
|
|
|
|
|
| 20 |
|
|
|
|
| 21 |
|
| 22 |
-
|
|
|
|
|
|
|
| 23 |
|
| 24 |
-
|
| 25 |
|
| 26 |
flying-doves-group: <a href="https://www.flaticon.com/free-icons/animal" title="animal icons">Animal icons created by Freepik - Flaticon</a>
|
| 27 |
|
|
@@ -55,4 +74,25 @@ supprimer: <a href="https://www.flaticon.com/fr/icones-gratuites/faux" title="fa
|
|
| 55 |
|
| 56 |
balai-magique: <a href="https://www.flaticon.com/fr/icones-gratuites/la-magie" title="la magie icônes">La magie icônes créées par Freepik - Flaticon</a>
|
| 57 |
|
| 58 |
-
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import gradio as gr
|
| 2 |
+
|
| 3 |
+
from dotenv import load_dotenv
|
| 4 |
+
import os
|
| 5 |
+
load_dotenv()
|
| 6 |
+
PATH = os.getcwd() + "/"
|
| 7 |
+
PATH_ASSETS = os.getenv('PATH_ASSETS')
|
| 8 |
+
PATH_ICONS = PATH + PATH_ASSETS + "icons/"
|
| 9 |
+
|
| 10 |
credits_text = """
|
| 11 |
# Credits
|
| 12 |
|
| 13 |
+
This work stemmed from a fruitful collaboration between SDSC and FIWI.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
|
| 15 |
+
## Scientific Expertise : FIWI from UniBE
|
| 16 |
|
| 17 |
+
From the [Institute for Fish and Wildlife Health, University of Bern](https://www.fiwi.vetsuisse.unibe.ch)
|
| 18 |
+
- **Isabelle Wethli**
|
| 19 |
+
- **Dr. Mirjam Pewsner**
|
| 20 |
+
- **Dr. Saskia Keller**
|
| 21 |
|
| 22 |
+
## Front End Development: SDSC
|
| 23 |
|
| 24 |
+
From the [Swiss Data Science Center](https://www.datascience.ch)
|
| 25 |
+
- **Carlos Viviar Rios**
|
| 26 |
+
- **Laure Vancauwenberghe**
|
| 27 |
|
| 28 |
+
## How to Contact Us?
|
| 29 |
|
| 30 |
+
Please reach out to FIWI via [their contacts](https://www.fiwi.vetsuisse.unibe.ch/about_us/team/index_eng.html).
|
| 31 |
|
| 32 |
+
## Special Thanks
|
| 33 |
|
| 34 |
+
- **Vogelwarte** for their advice, especially Samuel Wechsler.
|
| 35 |
+
- **Biolovision SA**, providers of **ornitho.ch**, for their collaboration: circumstances are matched to their current data collection schema on ornitho.ch
|
| 36 |
|
| 37 |
+
"""
|
| 38 |
|
| 39 |
+
icons_text = """
|
| 40 |
+
### Icons' Attributions
|
| 41 |
+
(scroll to see all)
|
| 42 |
|
| 43 |
+
Biolovision for the circumstances icons.
|
| 44 |
|
| 45 |
flying-doves-group: <a href="https://www.flaticon.com/free-icons/animal" title="animal icons">Animal icons created by Freepik - Flaticon</a>
|
| 46 |
|
|
|
|
| 74 |
|
| 75 |
balai-magique: <a href="https://www.flaticon.com/fr/icones-gratuites/la-magie" title="la magie icônes">La magie icônes créées par Freepik - Flaticon</a>
|
| 76 |
|
| 77 |
+
contact-information: <a href="https://www.flaticon.com/free-icons/contact-information" title="contact information icons">Contact information icons created by Freepik - Flaticon</a>
|
| 78 |
+
|
| 79 |
+
help: <a href="https://www.flaticon.com/free-icons/help" title="help icons">Help icons created by Freepik - Flaticon</a>
|
| 80 |
+
|
| 81 |
+
question: <a href="https://www.flaticon.com/free-icons/question" title="question icons">Question icons created by Freepik - Flaticon</a>
|
| 82 |
+
"""
|
| 83 |
+
|
| 84 |
+
with gr.Blocks(theme='shivi/calm_seafoam') as about:
|
| 85 |
+
with gr.Row(scale = 1):
|
| 86 |
+
gr.Image(PATH_ICONS+"sdsc.png",
|
| 87 |
+
height=200,
|
| 88 |
+
interactive=False,
|
| 89 |
+
show_fullscreen_button = False, show_share_button=False,
|
| 90 |
+
show_download_button=False, show_label=False)
|
| 91 |
+
gr.Image(PATH_ICONS+"fiwi.png",
|
| 92 |
+
height=200,
|
| 93 |
+
interactive=False,
|
| 94 |
+
show_fullscreen_button = False, show_share_button=False,
|
| 95 |
+
show_download_button=False, show_label=False)
|
| 96 |
+
|
| 97 |
+
gr.Markdown(credits_text, show_label=False)
|
| 98 |
+
gr.Markdown(icons_text, show_label=False, height=100)
|
app/assets/icons/contact-information.png
ADDED
|
|
app/assets/icons/fiwi.png
ADDED
|
|
app/assets/icons/help.png
ADDED
|
|
app/assets/icons/question.png
ADDED
|
|
app/assets/icons/sdsc.png
ADDED
|
|
app/contacts.py
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import gradio as gr
|
| 2 |
+
|
| 3 |
+
from dotenv import load_dotenv
|
| 4 |
+
import os
|
| 5 |
+
load_dotenv()
|
| 6 |
+
PATH = os.getcwd() + "/"
|
| 7 |
+
PATH_ASSETS = os.getenv('PATH_ASSETS')
|
| 8 |
+
PATH_ICONS = PATH + PATH_ASSETS + "icons/"
|
| 9 |
+
|
| 10 |
+
contact_text = """
|
| 11 |
+
# Contacts
|
| 12 |
+
|
| 13 |
+
You have an animal alive or dead in front of you and you do not know what to do?
|
| 14 |
+
Please call the contact below corresponding to your canton. (Cantons are in alphabetical order.)
|
| 15 |
+
|
| 16 |
+
## AG: Aargau
|
| 17 |
+
117 | Departement Bau, Verkehr und Umwelt, Abteilung Wald, Sektion Jagd und Fischerei
|
| 18 |
+
|
| 19 |
+
## AI: Appenzell Innerrhoden
|
| 20 |
+
071 788 92 87 | Bau- und Umweltdepartement, Amt für Umwelt, Fachstelle Jagd und Fischerei
|
| 21 |
+
|
| 22 |
+
## AR: Appenzell Ausserrhoden
|
| 23 |
+
079 698 19 16 |Departement Bau und Volkswirtschaft, Amt für Raum und Wald, Abteilung Natur und Wildtiere
|
| 24 |
+
|
| 25 |
+
## BE: Bern
|
| 26 |
+
0800 940 100 | Wirtschafts-, Energie- und Umweltdirektion
|
| 27 |
+
|
| 28 |
+
## BL: Basel-Landschaft
|
| 29 |
+
061 922 03 66, 061 552 56 59 | Volkswirtschafts- und Gesundheitsdirektion, Amt für Wald und Wild beider Basel
|
| 30 |
+
|
| 31 |
+
## BS: Basel-Stadt
|
| 32 |
+
061 922 03 66, 061 552 56 59 | Volkswirtschafts- und Gesundheitsdirektion, Amt für Wald und Wild beider Basel
|
| 33 |
+
|
| 34 |
+
## FR: Fribourg
|
| 35 |
+
026 305 23 31 | Energie, Landwirtschaft und Umwelt, Amt für Wald und Natur, Sektion Fauna, Jagd und Fischerei
|
| 36 |
+
|
| 37 |
+
## GE: Geneva
|
| 38 |
+
022 388 55 00 | Office cantonal de l'agriculture et de la nature, Centrale d'engagement et des transmissions (CET)
|
| 39 |
+
|
| 40 |
+
## GL: Glarus
|
| 41 |
+
Verwaltung Bau und Umwelt, Umwelt, Wald und Energie, Jagd und Fischerei
|
| 42 |
+
|
| 43 |
+
## GR: Graubünden
|
| 44 |
+
055 645 66 66 | Amt für Jagd und Fischerei Jagdbezirke - Über uns
|
| 45 |
+
|
| 46 |
+
## JU: Jura
|
| 47 |
+
032 420 48 00, 032 420 65 65 | Departement de l'environnement, Office de l'environnement, Chasse et protection de la faune sauvage
|
| 48 |
+
|
| 49 |
+
## LU: Luzern
|
| 50 |
+
041 248 81 17, 117 | Bau-, Umwelt- und Wirtschaftsdepartement, Landwirtschaft und Wald, Jagd, Wildhut und Jagdaufsicht
|
| 51 |
+
|
| 52 |
+
## NE: Neuchatel
|
| 53 |
+
032 889 67 80 | Service de la faune, des fôrets et de la nature, faune
|
| 54 |
+
|
| 55 |
+
## NW: Nidwalden
|
| 56 |
+
041 618 44 66 | Justiz- und Sicherheitsdirektion, Amt für Justiz, Abteilung Jagd und Fischerei
|
| 57 |
+
|
| 58 |
+
## OW: Obwalden
|
| 59 |
+
041 666 64 76 | Bau- und Raumentwicklungsdepartement, Amt für Wald und Landschaft, Wildtiere und Jagd
|
| 60 |
+
|
| 61 |
+
## SG: St. Gallen
|
| 62 |
+
117 | Volkwirtschaftsdepartement, Amt für Natur, Jagd und Fischerei
|
| 63 |
+
|
| 64 |
+
## SH: Schaffhausen
|
| 65 |
+
052 632 74 66 | Departement des Innern, Jagd und Fischerei
|
| 66 |
+
|
| 67 |
+
## SO: Solothurn
|
| 68 |
+
117| Volkswirtschaftdepartement, Amt für Wald, Jagd und Fischerei
|
| 69 |
+
|
| 70 |
+
## SZ: Schwyz
|
| 71 |
+
041 819 29 29 | Umweltdepartement, Amt für Wald und Natur, Jagd und Wildtiere
|
| 72 |
+
|
| 73 |
+
## TG: Thurgau
|
| 74 |
+
058 345 61 50 | Jagd- und Fischereiverwaltung
|
| 75 |
+
|
| 76 |
+
## TI: Ticino
|
| 77 |
+
091 814 28 71 | Divisione dell'ambiente, Ufficio della caccia e della pesca
|
| 78 |
+
|
| 79 |
+
## UR: Uri
|
| 80 |
+
041 875 2316 | Sicherheitsdirektion, Amt für Forst und Jagd
|
| 81 |
+
|
| 82 |
+
## VD: Vaud
|
| 83 |
+
021 557 88 55 | Environnement, Biodiversité et paysage, Police Faune-nature
|
| 84 |
+
|
| 85 |
+
## VS: Valais
|
| 86 |
+
027 606 70 00, 117 | Umwelt, Energie und Landwirtschaft, Dienststelle für Jagd, Fischerei und Wildtiere
|
| 87 |
+
|
| 88 |
+
## ZG: Zug
|
| 89 |
+
041 595 41 41 | Natur, Umwelt und Tiere, Arten, Lebensräume, Wildhut und Fischereiaufsicht
|
| 90 |
+
|
| 91 |
+
"""
|
| 92 |
+
|
| 93 |
+
|
| 94 |
+
with gr.Blocks(theme='shivi/calm_seafoam') as contacts:
|
| 95 |
+
with gr.Row(scale = 1):
|
| 96 |
+
gr.Image(PATH_ICONS+"help.png", height=300,
|
| 97 |
+
interactive=False,
|
| 98 |
+
show_fullscreen_button = False, show_share_button=False,
|
| 99 |
+
show_download_button=False, show_label=False)
|
| 100 |
+
gr.Image(PATH_ICONS+"contact-information.png", height=300,
|
| 101 |
+
interactive=False,
|
| 102 |
+
show_fullscreen_button = False, show_share_button=False,
|
| 103 |
+
show_download_button=False, show_label=False)
|
| 104 |
+
gr.Image(PATH_ICONS+"question.png", height=300,
|
| 105 |
+
interactive=False,
|
| 106 |
+
show_fullscreen_button = False, show_share_button=False,
|
| 107 |
+
show_download_button=False, show_label=False)
|
| 108 |
+
|
| 109 |
+
gr.Markdown(contact_text, show_label=False)
|
| 110 |
+
|
app/{dead.py → dead_wounded/dead.py}
RENAMED
|
File without changes
|
app/{wounded.py → dead_wounded/wounded.py}
RENAMED
|
File without changes
|
app/gradio_test/test_selectdata_event.py
DELETED
|
@@ -1,16 +0,0 @@
|
|
| 1 |
-
import gradio as gr
|
| 2 |
-
|
| 3 |
-
with gr.Blocks() as demo:
|
| 4 |
-
table = gr.Dataframe([[1, 2, 3], [4, 5, 6]])
|
| 5 |
-
#gallery = gr.Gallery([("cat.jpg", "Cat"), ("dog.jpg", "Dog")])
|
| 6 |
-
textbox = gr.Textbox("Hello World!")
|
| 7 |
-
statement = gr.Textbox()
|
| 8 |
-
|
| 9 |
-
def on_select(evt: gr.SelectData):
|
| 10 |
-
return gr.Textbox(f"You selected {evt.value} at {evt.index} from {evt.target}")
|
| 11 |
-
|
| 12 |
-
table.select(on_select, inputs=[table], outputs=[statement])
|
| 13 |
-
#gallery.select(on_select, gallery, statement)
|
| 14 |
-
textbox.select(on_select, inputs=[textbox], outputs=[statement])
|
| 15 |
-
|
| 16 |
-
demo.launch(server_name="0.0.0.0", server_port=3131)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/gradio_test/tests_delete_gallery.py
DELETED
|
@@ -1,25 +0,0 @@
|
|
| 1 |
-
import gradio as gr
|
| 2 |
-
|
| 3 |
-
# Example initial image list
|
| 4 |
-
images = [
|
| 5 |
-
"https://via.placeholder.com/150/0000FF",
|
| 6 |
-
"https://via.placeholder.com/150/FF0000",
|
| 7 |
-
"https://via.placeholder.com/150/00FF00"
|
| 8 |
-
]
|
| 9 |
-
|
| 10 |
-
# Function to remove a selected image from the gallery
|
| 11 |
-
def delete_image(selected_image, image_list):
|
| 12 |
-
if selected_image in image_list:
|
| 13 |
-
image_list.remove(selected_image) # Remove the selected image
|
| 14 |
-
return image_list # Return the updated image list
|
| 15 |
-
|
| 16 |
-
# Gradio app
|
| 17 |
-
with gr.Blocks() as demo:
|
| 18 |
-
gallery = gr.Gallery(value=images, label="Gallery") # Gallery of images
|
| 19 |
-
selected_image = gr.Dropdown(choices=images, label="Select Image to Delete") # Dropdown for selection
|
| 20 |
-
delete_button = gr.Button("Delete Selected Image") # Button to delete
|
| 21 |
-
|
| 22 |
-
# When button is clicked, delete the selected image and update gallery
|
| 23 |
-
delete_button.click(fn=delete_image, inputs=[selected_image, gallery], outputs=gallery)
|
| 24 |
-
|
| 25 |
-
demo.launch(server_name="0.0.0.0", server_port=3232)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/main.py
CHANGED
|
@@ -5,8 +5,12 @@ disable_caching()
|
|
| 5 |
|
| 6 |
from mode_advanced import advanced
|
| 7 |
from mode_simple import simple
|
|
|
|
|
|
|
| 8 |
|
| 9 |
-
|
|
|
|
|
|
|
| 10 |
theme='shivi/calm_seafoam')
|
| 11 |
|
| 12 |
if __name__ == "__main__":
|
|
|
|
| 5 |
|
| 6 |
from mode_advanced import advanced
|
| 7 |
from mode_simple import simple
|
| 8 |
+
from contacts import contacts
|
| 9 |
+
from about import about
|
| 10 |
|
| 11 |
+
|
| 12 |
+
demo = gr.TabbedInterface([simple, advanced, contacts, about],
|
| 13 |
+
["Simple Mode" , "Advanced Reporting", "Cantonal Contacts", "About"],
|
| 14 |
theme='shivi/calm_seafoam')
|
| 15 |
|
| 16 |
if __name__ == "__main__":
|
app/mode_advanced.py
CHANGED
|
@@ -1,24 +1,23 @@
|
|
| 1 |
import gradio as gr
|
| 2 |
from gradio_modal import Modal
|
|
|
|
| 3 |
|
| 4 |
from geolocalisation.js_geolocation import js_geocode, display_location
|
| 5 |
-
from validation_submission.utils_individual import generate_random_md5
|
| 6 |
-
from validation_submission.utils_individual import add_data_to_individual
|
| 7 |
-
from validation_submission.submission import validate_save_individual
|
| 8 |
-
from validation_submission.validation import reset_error_box
|
| 9 |
-
from validation_submission.utils_individual import reset_individual
|
| 10 |
from geolocalisation.maps import get_location
|
| 11 |
-
from
|
| 12 |
-
from
|
| 13 |
-
from wounded import show_section_wounded
|
| 14 |
from circumstances.circumstances import show_circumstances
|
| 15 |
from circumstances.circumstances_dropdowns import *
|
| 16 |
from physical.physical_select_animal import show_physical, find_bounding_box
|
| 17 |
from physical.physical_checkbox import on_select_body_part, hide_physical
|
| 18 |
from behavior.behavior_checkbox import show_behavior, on_select_behavior
|
| 19 |
from follow_up.followup_events import save_fe
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
from styling.style import *
|
| 21 |
-
from credits import credits_text
|
| 22 |
|
| 23 |
from dotenv import load_dotenv
|
| 24 |
import os
|
|
@@ -407,10 +406,18 @@ with gr.Blocks(theme='shivi/calm_seafoam') as advanced:
|
|
| 407 |
fe_name_recipient_wounded, fe_collection_ref_wounded,
|
| 408 |
error_icon, error_box
|
| 409 |
])
|
| 410 |
-
|
| 411 |
-
|
| 412 |
# ---------------------------------------------------------
|
| 413 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 414 |
button_clear.click()
|
| 415 |
button_clear.click(hide_physical,
|
| 416 |
inputs =[gr.Text(mode, visible=False)],
|
|
@@ -428,17 +435,4 @@ with gr.Blocks(theme='shivi/calm_seafoam') as advanced:
|
|
| 428 |
checkbox_legs_dead, text_legs_dead])
|
| 429 |
button_clear.click(reset_error_box, inputs=[error_icon, error_box], outputs=[error_icon, error_box])
|
| 430 |
button_clear.click(reset_individual, inputs=[individual], outputs=[individual])
|
| 431 |
-
|
| 432 |
-
# ---------------------------------------------------------
|
| 433 |
-
# VALIDATE ANIMAL
|
| 434 |
-
button_df.click(validate_save_individual,
|
| 435 |
-
inputs=[individual,
|
| 436 |
-
error_icon,
|
| 437 |
-
error_box,
|
| 438 |
-
gr.Text(mode, visible=False)],
|
| 439 |
-
outputs=[individual, error_icon, error_box])
|
| 440 |
-
# ---------------------------------------------------------
|
| 441 |
-
#CREDITS
|
| 442 |
-
with Modal(visible=False) as modal_creds:
|
| 443 |
-
gr.Markdown(credits_text)
|
| 444 |
-
show_creds.click(lambda: Modal(visible=True), None, modal_creds)
|
|
|
|
| 1 |
import gradio as gr
|
| 2 |
from gradio_modal import Modal
|
| 3 |
+
from functools import partial
|
| 4 |
|
| 5 |
from geolocalisation.js_geolocation import js_geocode, display_location
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6 |
from geolocalisation.maps import get_location
|
| 7 |
+
from dead_wounded.dead import show_section_dead
|
| 8 |
+
from dead_wounded.wounded import show_section_wounded
|
|
|
|
| 9 |
from circumstances.circumstances import show_circumstances
|
| 10 |
from circumstances.circumstances_dropdowns import *
|
| 11 |
from physical.physical_select_animal import show_physical, find_bounding_box
|
| 12 |
from physical.physical_checkbox import on_select_body_part, hide_physical
|
| 13 |
from behavior.behavior_checkbox import show_behavior, on_select_behavior
|
| 14 |
from follow_up.followup_events import save_fe
|
| 15 |
+
from validation_submission.utils_individual import generate_random_md5
|
| 16 |
+
from validation_submission.utils_individual import add_data_to_individual
|
| 17 |
+
from validation_submission.submission import validate_save_individual
|
| 18 |
+
from validation_submission.validation import reset_error_box
|
| 19 |
+
from validation_submission.utils_individual import reset_individual
|
| 20 |
from styling.style import *
|
|
|
|
| 21 |
|
| 22 |
from dotenv import load_dotenv
|
| 23 |
import os
|
|
|
|
| 406 |
fe_name_recipient_wounded, fe_collection_ref_wounded,
|
| 407 |
error_icon, error_box
|
| 408 |
])
|
| 409 |
+
|
|
|
|
| 410 |
# ---------------------------------------------------------
|
| 411 |
+
# VALIDATE ANIMAL
|
| 412 |
+
button_df.click(validate_save_individual,
|
| 413 |
+
inputs=[individual,
|
| 414 |
+
error_icon,
|
| 415 |
+
error_box,
|
| 416 |
+
gr.Text(mode, visible=False)],
|
| 417 |
+
outputs=[error_icon, error_box])
|
| 418 |
+
|
| 419 |
+
# ---------------------------------------------------------
|
| 420 |
+
# CLEAR BUTTON
|
| 421 |
button_clear.click()
|
| 422 |
button_clear.click(hide_physical,
|
| 423 |
inputs =[gr.Text(mode, visible=False)],
|
|
|
|
| 435 |
checkbox_legs_dead, text_legs_dead])
|
| 436 |
button_clear.click(reset_error_box, inputs=[error_icon, error_box], outputs=[error_icon, error_box])
|
| 437 |
button_clear.click(reset_individual, inputs=[individual], outputs=[individual])
|
| 438 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/mode_simple.py
CHANGED
|
@@ -2,13 +2,9 @@ import gradio as gr
|
|
| 2 |
from gradio_modal import Modal
|
| 3 |
from functools import partial
|
| 4 |
|
| 5 |
-
from
|
| 6 |
-
from
|
| 7 |
-
from
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
from dead import show_section_dead
|
| 11 |
-
from wounded import show_section_wounded
|
| 12 |
from circumstances.circumstances import show_circumstances
|
| 13 |
from circumstances.circumstances_dropdowns import *
|
| 14 |
from physical.physical_select_animal import show_physical, find_bounding_box
|
|
@@ -16,10 +12,10 @@ from physical.physical_checkbox import on_select_body_part, hide_physical
|
|
| 16 |
from behavior.behavior_checkbox import show_behavior, on_select_behavior
|
| 17 |
from follow_up.followup_events import save_fe
|
| 18 |
from styling.style import *
|
| 19 |
-
from credits import credits_text
|
| 20 |
from validation_submission.utils_individual import reset_individual
|
| 21 |
-
|
| 22 |
-
from
|
|
|
|
| 23 |
from validation_submission.utils_individual import generate_random_md5
|
| 24 |
|
| 25 |
from dotenv import load_dotenv
|
|
@@ -384,8 +380,8 @@ with gr.Blocks(theme='shivi/calm_seafoam') as simple:
|
|
| 384 |
with gr.Row():
|
| 385 |
button_df = gr.Button("SUBMIT OBSERVATION", icon=PATH_ICONS+"effective.png",
|
| 386 |
scale = 3)
|
| 387 |
-
button_clear = gr.ClearButton(value="CLEAR",
|
| 388 |
-
scale =
|
| 389 |
icon = PATH_ICONS+"balai-magique.png",
|
| 390 |
components=[
|
| 391 |
camera,
|
|
@@ -408,10 +404,18 @@ with gr.Blocks(theme='shivi/calm_seafoam') as simple:
|
|
| 408 |
fe_name_recipient_wounded, fe_collection_ref_wounded,
|
| 409 |
error_icon, error_box
|
| 410 |
])
|
| 411 |
-
|
| 412 |
-
|
| 413 |
# ---------------------------------------------------------
|
| 414 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 415 |
button_clear.click()
|
| 416 |
button_clear.click(hide_physical,
|
| 417 |
inputs=[gr.Text(mode, visible=False)],
|
|
@@ -430,16 +434,4 @@ with gr.Blocks(theme='shivi/calm_seafoam') as simple:
|
|
| 430 |
button_clear.click(reset_error_box, inputs=[error_icon, error_box], outputs=[error_icon, error_box])
|
| 431 |
button_clear.click(reset_individual, inputs=[individual], outputs=[individual])
|
| 432 |
|
| 433 |
-
|
| 434 |
-
# VALIDATE ANIMAL
|
| 435 |
-
button_df.click(validate_save_individual,
|
| 436 |
-
inputs=[individual,
|
| 437 |
-
error_icon,
|
| 438 |
-
error_box,
|
| 439 |
-
gr.Text(mode, visible=False)],
|
| 440 |
-
outputs=[error_icon, error_box])
|
| 441 |
-
# ---------------------------------------------------------
|
| 442 |
-
#CREDITS
|
| 443 |
-
with Modal(visible=False) as modal_creds:
|
| 444 |
-
gr.Markdown(credits_text)
|
| 445 |
-
show_creds.click(lambda: Modal(visible=True), None, modal_creds)
|
|
|
|
| 2 |
from gradio_modal import Modal
|
| 3 |
from functools import partial
|
| 4 |
|
| 5 |
+
from geolocalisation.js_geolocation import js_geocode, display_location
|
| 6 |
+
from dead_wounded.dead import show_section_dead
|
| 7 |
+
from dead_wounded.wounded import show_section_wounded
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
from circumstances.circumstances import show_circumstances
|
| 9 |
from circumstances.circumstances_dropdowns import *
|
| 10 |
from physical.physical_select_animal import show_physical, find_bounding_box
|
|
|
|
| 12 |
from behavior.behavior_checkbox import show_behavior, on_select_behavior
|
| 13 |
from follow_up.followup_events import save_fe
|
| 14 |
from styling.style import *
|
|
|
|
| 15 |
from validation_submission.utils_individual import reset_individual
|
| 16 |
+
from validation_submission.utils_individual import add_data_to_individual
|
| 17 |
+
from validation_submission.submission import validate_save_individual
|
| 18 |
+
from validation_submission.validation import reset_error_box
|
| 19 |
from validation_submission.utils_individual import generate_random_md5
|
| 20 |
|
| 21 |
from dotenv import load_dotenv
|
|
|
|
| 380 |
with gr.Row():
|
| 381 |
button_df = gr.Button("SUBMIT OBSERVATION", icon=PATH_ICONS+"effective.png",
|
| 382 |
scale = 3)
|
| 383 |
+
button_clear = gr.ClearButton(value="CLEAR / Create NEW Observation",
|
| 384 |
+
scale = 2,
|
| 385 |
icon = PATH_ICONS+"balai-magique.png",
|
| 386 |
components=[
|
| 387 |
camera,
|
|
|
|
| 404 |
fe_name_recipient_wounded, fe_collection_ref_wounded,
|
| 405 |
error_icon, error_box
|
| 406 |
])
|
| 407 |
+
|
|
|
|
| 408 |
# ---------------------------------------------------------
|
| 409 |
+
# VALIDATE & SUBMIT ANIMAL
|
| 410 |
+
button_df.click(validate_save_individual,
|
| 411 |
+
inputs=[individual,
|
| 412 |
+
error_icon,
|
| 413 |
+
error_box,
|
| 414 |
+
gr.Text(mode, visible=False)],
|
| 415 |
+
outputs=[error_icon, error_box])
|
| 416 |
+
|
| 417 |
+
# ---------------------------------------------------------
|
| 418 |
+
# CLEAR BUTTON
|
| 419 |
button_clear.click()
|
| 420 |
button_clear.click(hide_physical,
|
| 421 |
inputs=[gr.Text(mode, visible=False)],
|
|
|
|
| 434 |
button_clear.click(reset_error_box, inputs=[error_icon, error_box], outputs=[error_icon, error_box])
|
| 435 |
button_clear.click(reset_individual, inputs=[individual], outputs=[individual])
|
| 436 |
|
| 437 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|