'''' 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)