|
import gradio as gr |
|
import pandas as pd |
|
import numpy as np |
|
import random |
|
|
|
def show_stars(): |
|
""" Function that shows the HTML script for stars -Janika""" |
|
stars_html = """ |
|
<style> |
|
/* Title */ |
|
.title-text { |
|
color: white; |
|
font-family: sans-serif; |
|
font-size: 14px; |
|
font-weight: bold; |
|
} |
|
|
|
/* Empty stars */ |
|
.star-rating { |
|
display: inline-block; |
|
font-size: 1.5em; |
|
color: lightgray; |
|
} |
|
|
|
/* Filled stars */ |
|
.star-rating .star.filled { |
|
color: gold; |
|
} |
|
|
|
/* Box for the whole star rating component */ |
|
.rating-box { |
|
border: 1px transparent; |
|
background-color: #1f2937; |
|
padding: 10px; |
|
border-radius: 5px; |
|
width: 100%; |
|
margin-left: 0; |
|
} |
|
|
|
/* Box for the title */ |
|
.title-box { |
|
border: 1px transparent; |
|
background-color: #ca8a04; |
|
padding: 3px; |
|
border-radius: 8px; |
|
display: inline-block; |
|
margin-bottom: 6px; |
|
} |
|
|
|
/* Box for stars */ |
|
.star-box { |
|
border: 1px transparent; |
|
background-color: #374151; |
|
padding: 10px; |
|
border-radius: 5px; |
|
width: fit-content; |
|
margin: 0; |
|
} |
|
</style> |
|
|
|
<div class="rating-box"> |
|
<div class="title-box"> |
|
<p class="title-text">Star rating</p> |
|
</div> |
|
<div class="star-box"> |
|
<div class="star-rating" data-rating="4"> |
|
<span class="star">★</span> |
|
<span class="star">★</span> |
|
<span class="star">★</span> |
|
<span class="star">★</span> |
|
<span class="star">★</span> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
<script> |
|
document.addEventListener('DOMContentLoaded', function() { |
|
const ratingElement = document.querySelector('.star-rating'); |
|
const rating = parseInt(ratingElement.getAttribute('data-rating')); |
|
const stars = ratingElement.querySelectorAll('.star'); |
|
for (let i = 0; i < rating; i++) { |
|
stars[i].classList.add('filled'); |
|
} |
|
}); |
|
</script> |
|
""" |
|
return stars_html |
|
|
|
|
|
df = pd.DataFrame({ |
|
'Year': np.random.randint(2000, 2024, 25), |
|
'Reviews': np.random.randint(120, 320, 25), |
|
}) |
|
|
|
|
|
def handle_feedback(feedback, name): |
|
return f"Thank you for your feedback, {name}!" |
|
|
|
|
|
def update_placeholder(name): |
|
if name: |
|
return f"Enter your feedback here, {name}..." |
|
else: |
|
return "Enter your feedback here..." |
|
|
|
|
|
theme = gr.themes.Soft( |
|
primary_hue="yellow", |
|
secondary_hue="amber", |
|
spacing_size="sm", |
|
radius_size="lg", |
|
) |
|
|
|
with gr.Blocks(theme=theme) as demo: |
|
|
|
|
|
with gr.Tab("User Interface"): |
|
with gr.Row(): |
|
with gr.Column(scale=1, min_width=300): |
|
|
|
summary_output = gr.Textbox(label="Summary") |
|
|
|
with gr.Column(scale=2, min_width=300): |
|
|
|
star_rating = gr.HTML(value=show_stars()) |
|
|
|
|
|
keywords_output = gr.Textbox(label="Keywords") |
|
|
|
|
|
with gr.Tab("Testing Area"): |
|
with gr.Row(): |
|
name_input = gr.Textbox(label="Enter your name", placeholder="Enter your name here...") |
|
|
|
with gr.Row(): |
|
text_input = gr.Textbox(label="Please give us feedback!", |
|
placeholder="Enter your feedback here...", |
|
max_length=5000) |
|
|
|
|
|
name_input.change(fn=update_placeholder, inputs=name_input, outputs=text_input) |
|
|
|
|
|
send_button = gr.Button("Send") |
|
|
|
|
|
feedback_output = gr.Textbox(label="Submission Result", interactive=False) |
|
|
|
|
|
send_button.click(handle_feedback, inputs=[text_input, name_input], outputs=feedback_output) |
|
|
|
demo.launch() |