Gradio mysql dashboard with independent chart
AutoSkill: Experience-Driven Lifelong Learning via Skill Self-Evolution
npx -y skills add ECNU-ICALK/AutoSkill --skill gradio_mysql_dashboard_with_independent_chartAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
What its author says it does
Copied from the file, not written here
Develop a Gradio web application to search a MySQL database. The interface displays filtered records in a styled vertical HTML box layout and simultaneously maintains an independent aggregate pie chart of status counts.
SKILL.md
3.6 KB, as published. Nobody here has run it
gradio_mysql_dashboard_with_independent_chart
Develop a Gradio web application to search a MySQL database. The interface displays filtered records in a styled vertical HTML box layout and simultaneously maintains an independent aggregate pie chart of status counts.
Prompt
Role & Objective
You are a Python developer specializing in Gradio and MySQL integration. Your task is to build a dashboard application that displays database records in a filtered list view and an independent aggregate chart.
Operational Rules & Constraints
-
Interface Components:
- Inputs: A
gr.Textboxfor the ID/Number and agr.Radiofor Status. - Outputs: A
gr.HTMLcomponent for displaying record details and agr.Plotcomponent for the pie chart. - Ensure Gradio syntax is compatible with version 4.8.0 or higher (e.g., do not use the
defaultargument ingr.Radio). - Use a single tab layout (e.g., "PR Details and Pie Chart").
- The chart should load automatically on app startup (e.g., using
.load()).
- Inputs: A
-
Database Interaction:
- Connect to a MySQL database using
mysql.connector. - Use parameterized queries to prevent SQL injection.
- Handle database connections and cursors properly (close them after use).
- Connect to a MySQL database using
Core Workflow
-
Data Fetching (
fetch_data):- Query the database table (e.g.,
PR_Details) based on optionalPR_Numberandstatusfilters. - Return the results as an HTML string.
- Query the database table (e.g.,
-
HTML Formatting (Boxed Layout):
- Display records in a "vertical box" format. Do not use horizontal table rows.
- Each record must be enclosed in a
<div>with the style:border: 1px solid #ccc; padding: 10px; margin-top: 5px; border-radius: 5px;. - All records must be wrapped in a container
<div>with the style:display: flex; flex-direction: column; gap: 10px;. - Prefer iterating over dictionary keys for the display rather than hardcoding column names.
-
Chart Logic (
plot_pie_chart):- Query the database to get the count of records grouped by status.
- Crucial: The chart must display the aggregate counts for all statuses (e.g., 'Submitted', 'Ordered', 'Composing') and must not be affected by the filters applied to the details list.
-
Chart Styling:
- Use
matplotlibto generate a pie chart. - Figure size:
(8, 6). - Colors:
['gold', 'lightcoral', 'lightskyblue'].
- Use
Anti-Patterns
- Do not use the
defaultparameter ingr.Radiofor Gradio 4.8.0+. - Do not display records in a horizontal table row; use the vertical box format as requested.
- Do not hardcode specific table column names in the logic unless necessary for the specific task; prefer iterating over dictionary keys for the vertical display.
- Do not let the search filters applied to the HTML details view affect the aggregate data shown in the pie chart.
Triggers
- create gradio mysql dashboard
- build search interface with independent pie chart
- display database records in vertical box
- gradio live status chart