evelyn / testing_ui_interface /test_popup.py
evelyn-lo's picture
Upload folder using huggingface_hub
37c870e verified
''''
Testing the Popup Function in Gradio App
Tested Working normal--3.24.1
Not Working on the latest version 4.37.2
'''
#########-------------------------Version 1 Popup ------------------------------#########
# import gradio as gr
# js = "(x) => confirm('Are you sure?')"
# with gr.Blocks() as demo:
# btn = gr.Button()
# hidden_checkbox = gr.Checkbox(visible=False)
# textbox = gr.Textbox()
# num = gr.Number(visible=False)
# def hidden_checkbox_fn(checkbox_state, number):
# if checkbox_state:
# number += 1
# display = f'confirmed {number} times'
# return False, display, number
# btn.click(None, None, hidden_checkbox, _js=js)
# hidden_checkbox.change(hidden_checkbox_fn, [hidden_checkbox, num], [hidden_checkbox, textbox, num])
# demo.launch()
#########-------------------------Version 2 Popup ChatBot------------------------------#########
# import gradio as gr
# # JavaScript code to create a feedback pop-up and return the input value
# js_feedback = """
# (x) => {
# let feedback = prompt('Please enter your feedback:');
# return feedback ? feedback : '';
# }
# """
# with gr.Blocks() as demo:
# btn = gr.Button("Click for Feedback")
# hidden_textbox = gr.Textbox(visible=False) # Hidden textbox to store feedback
# display_textbox = gr.Textbox(label="Feedback", interactive=False) # Display feedback
# num = gr.Number(visible=False, value=0) # Hidden number to keep track of confirmations
# def process_feedback(feedback, number):
# if feedback:
# number += 1
# display = f'Feedback {number}: {feedback}'
# else:
# display = 'No feedback provided.'
# return '', display, number # Clear hidden_textbox, update display_textbox, update num
# # Button click triggers the JavaScript feedback pop-up
# btn.click(None, None, hidden_textbox, _js=js_feedback)
# # When hidden_textbox value changes, process the feedback
# hidden_textbox.change(
# process_feedback,
# inputs=[hidden_textbox, num],
# outputs=[hidden_textbox, display_textbox, num]
# )
# demo.launch(server_name="0.0.0.0", share=True, server_port=7861)
# JavaScript code to create a feedback pop-up and return the input value
import gradio as gr
import json
import os
from datetime import datetime
js_feedback = """
(x) => {
let feedback = prompt('Please enter your feedback:');
return feedback ? feedback : '';
}
"""
# Function to save feedback to a JSON file
def save_feedback(feedback, number):
print("save_feedback function called") # Debug statement
print(f"Received feedback: {feedback}") # Debug statement
print(f"Feedback number: {number}") # Debug statement
if feedback:
number += 1
display = f'Feedback {number}: {feedback}'
feedback_entry = {
"timestamp": datetime.now().isoformat(),
"feedback": feedback,
"feedback_number": number
}
file_path = "feedback.json"
try:
if not os.path.exists(file_path):
with open(file_path, 'w') as file:
json.dump([], file)
with open(file_path, 'r+') as file:
feedback_list = json.load(file)
feedback_list.append(feedback_entry)
file.seek(0)
json.dump(feedback_list, file, indent=4)
except Exception as e:
print(f"Error saving feedback: {e}")
display = f"Error saving feedback: {e}"
else:
display = 'No feedback provided.'
return '', display, number # Clear hidden_textbox, update display_textbox, update num
with gr.Blocks() as demo:
btn = gr.Button("Your Feedback :)")
hidden_textbox = gr.Textbox(visible=False) # Hidden textbox to store feedback
display_textbox = gr.Textbox(label="Feedback", interactive=False) # Display feedback
num = gr.Number(visible=False, value=0) # Hidden number to keep track of feedback count
btn.click(None, None, hidden_textbox, _js=js_feedback)
hidden_textbox.change(
save_feedback,
inputs=[hidden_textbox, num],
outputs=[hidden_textbox, display_textbox, num]
)
demo.launch(server_name="0.0.0.0", share=True, server_port=7100)