Spaces:
Sleeping
Sleeping
| <!-- templates/results.html --> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Plant Analysis Results</title> | |
| <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"> | |
| <style> | |
| body { | |
| background-color: #f8f9fa; | |
| font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; | |
| } | |
| .header-section { | |
| background-color: #28a745; | |
| color: white; | |
| padding: 2rem 0; | |
| margin-bottom: 2rem; | |
| } | |
| .result-container { | |
| background-color: white; | |
| border-radius: 10px; | |
| padding: 2rem; | |
| box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); | |
| margin-bottom: 2rem; | |
| } | |
| .image-container { | |
| text-align: center; | |
| margin-bottom: 2rem; | |
| } | |
| .image-container img { | |
| max-height: 400px; | |
| max-width: 100%; | |
| border-radius: 8px; | |
| box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); | |
| } | |
| .result-card { | |
| border-left: 4px solid; | |
| margin-bottom: 1.5rem; | |
| padding: 1rem; | |
| border-radius: 5px; | |
| box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); | |
| } | |
| .healthy { | |
| background-color: #d4edda; | |
| border-left-color: #28a745; | |
| } | |
| .severity-low { | |
| background-color: #e7f5e9; | |
| border-left-color: #3cb371; | |
| } | |
| .severity-medium { | |
| background-color: #fff3cd; | |
| border-left-color: #ffc107; | |
| } | |
| .severity-high { | |
| background-color: #f8d7da; | |
| border-left-color: #dc3545; | |
| } | |
| .info-row { | |
| display: flex; | |
| margin-bottom: 0.5rem; | |
| } | |
| .info-label { | |
| font-weight: bold; | |
| width: 120px; | |
| flex-shrink: 0; | |
| } | |
| .info-content { | |
| flex-grow: 1; | |
| } | |
| .probability-bar { | |
| height: 8px; | |
| background-color: #e9ecef; | |
| border-radius: 4px; | |
| margin-top: 5px; | |
| overflow: hidden; | |
| } | |
| .probability-fill { | |
| height: 100%; | |
| border-radius: 4px; | |
| background-color: #28a745; | |
| } | |
| .product-card { | |
| height: 100%; | |
| transition: transform 0.3s; | |
| } | |
| .product-card:hover { | |
| transform: translateY(-5px); | |
| box-shadow: 0 5px 15px rgba(0,0,0,0.1); | |
| } | |
| .info-source { | |
| font-size: 0.8rem; | |
| color: #6c757d; | |
| margin-top: 0.5rem; | |
| } | |
| .resource-badge { | |
| position: absolute; | |
| top: 10px; | |
| right: 10px; | |
| font-size: 0.7rem; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <div class="header-section"> | |
| <div class="container text-center"> | |
| <h1 class="display-5">Plant Analysis Results</h1> | |
| <p class="lead">Analysis for {{ plant_name }}</p> | |
| </div> | |
| </div> | |
| <div class="container mb-5"> | |
| <div class="row"> | |
| <div class="col-md-4"> | |
| <div class="image-container"> | |
| <img src="{{ url_for('static', filename=image_path) }}" alt="{{ plant_name }} Image" class="img-fluid"> | |
| <div class="mt-3"> | |
| <h5>{{ plant_name }}</h5> | |
| {% if results.is_healthy %} | |
| <span class="badge bg-success">Healthy</span> | |
| {% else %} | |
| <span class="badge bg-warning">Issues Detected</span> | |
| {% endif %} | |
| </div> | |
| </div> | |
| <div class="result-container"> | |
| <h4>Analysis Summary</h4> | |
| <div class="info-row"> | |
| <div class="info-label">Plant:</div> | |
| <div class="info-content">{{ plant_name }}</div> | |
| </div> | |
| <div class="info-row"> | |
| <div class="info-label">Status:</div> | |
| <div class="info-content"> | |
| {% if results.is_healthy %} | |
| <span class="text-success">Healthy</span> | |
| {% else %} | |
| <span class="text-warning">Issues Detected</span> | |
| {% endif %} | |
| </div> | |
| </div> | |
| {% if results.confidence %} | |
| <div class="info-row"> | |
| <div class="info-label">Confidence:</div> | |
| <div class="info-content">{{ results.confidence }}</div> | |
| </div> | |
| {% endif %} | |
| <div class="d-grid gap-2 mt-4"> | |
| <a href="{{ url_for('index') }}" class="btn btn-primary">Analyze Another Plant</a> | |
| </div> | |
| </div> | |
| {% if results.audio_file %} | |
| <div class="result-container mt-3"> | |
| <h5>Audio Summary:</h5> | |
| <audio controls> | |
| <source src="static/audio/audio_result.mp3" type="audio/mp3"> | |
| Your browser does not support the audio element. | |
| </audio> | |
| </div> | |
| {% endif %} | |
| </div> | |
| <div class="col-md-8"> | |
| {% if results.is_healthy %} | |
| <div class="result-container healthy"> | |
| <h3 class="text-success">Good News!</h3> | |
| <p class="lead">Your {{ plant_name }} plant appears to be healthy. Continue with your current care practices.</p> | |
| <h5 class="mt-4">Recommendations:</h5> | |
| <ul> | |
| <li>Maintain regular watering schedule</li> | |
| <li>Continue with balanced fertilization</li> | |
| <li>Monitor for any changes in appearance</li> | |
| <li>Ensure proper sunlight exposure</li> | |
| <li>Practice preventive measures against common pests and diseases</li> | |
| </ul> | |
| </div> | |
| {% elif results.results %} | |
| <div class="result-container"> | |
| <h3>Detected Issues</h3> | |
| <p>Here are the potential issues detected in your {{ plant_name }} plant:</p> | |
| {% for result in results.results %} | |
| <div class="result-card severity-{{ result.severity|lower }}"> | |
| <div class="d-flex justify-content-between align-items-center mb-2"> | |
| <h4>{{ loop.index }}. {{ result.name }}</h4> | |
| <div> | |
| <span class="badge bg-info me-2">{{ result.type }}</span> | |
| <span class="badge {% if result.severity|lower == 'low' %}bg-success{% elif result.severity|lower == 'medium' %}bg-warning{% else %}bg-danger{% endif %}"> | |
| {{ result.severity }} Severity | |
| </span> | |
| </div> | |
| </div> | |
| <div class="info-row"> | |
| <div class="info-label">Probability:</div> | |
| <div class="info-content"> | |
| {{ result.probability }} | |
| <div class="probability-bar"> | |
| {% set prob_value = result.probability|replace('%', '')|float %} | |
| <div class="probability-fill" style="width: {{ prob_value }}%;"></div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="info-row"> | |
| <div class="info-label">Symptoms:</div> | |
| <div class="info-content">{{ result.symptoms }}</div> | |
| </div> | |
| <div class="info-row"> | |
| <div class="info-label">Causes:</div> | |
| <div class="info-content">{{ result.causes }}</div> | |
| </div> | |
| <div class="info-row"> | |
| <div class="info-label">Spreading:</div> | |
| <div class="info-content">{{ result.spreading }}</div> | |
| </div> | |
| <div class="mt-3"> | |
| <h5>Treatment:</h5> | |
| <p>{{ result.treatment }}</p> | |
| </div> | |
| <div class="mt-3"> | |
| <h5>Prevention:</h5> | |
| <p>{{ result.prevention }}</p> | |
| </div> | |
| {% if web_info and result.name in web_info and web_info[result.name] %} | |
| <div class="mt-4"> | |
| <h5>Additional Information:</h5> | |
| <div class="card"> | |
| <div class="card-body"> | |
| <h6 class="card-title">{{ web_info[result.name].title }}</h6> | |
| <p class="card-text">{{ web_info[result.name].summary }}</p> | |
| <div class="d-flex justify-content-between"> | |
| <a href="{{ web_info[result.name].link }}" class="btn btn-sm btn-outline-success" target="_blank">Read More</a> | |
| <span class="info-source">Source: Agrowon</span> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| {% endif %} | |
| {% if product_info and result.name in product_info and product_info[result.name] %} | |
| <div class="mt-4"> | |
| <h5>Recommended Products:</h5> | |
| <div class="row"> | |
| {% for product in product_info[result.name][:2] %} | |
| <div class="col-md-6 mb-2"> | |
| <div class="card product-card"> | |
| <div class="card-body"> | |
| <span class="badge bg-secondary resource-badge"> | |
| {% if 'indiamart' in product.link %}IndiaMart{% else %}Krishi Seva{% endif %} | |
| </span> | |
| <h6 class="card-title" style="font-size: 0.9rem;">{{ product.title }}</h6> | |
| <p class="card-text small">{{ product.snippet[:100] }}{% if product.snippet|length > 100 %}...{% endif %}</p> | |
| <a href="{{ product.link }}" class="btn btn-sm btn-outline-primary" target="_blank">View Product</a> | |
| </div> | |
| </div> | |
| </div> | |
| {% endfor %} | |
| </div> | |
| {% if product_info[result.name]|length > 2 %} | |
| <div class="text-center mt-2"> | |
| <button class="btn btn-sm btn-link" type="button" data-bs-toggle="collapse" data-bs-target="#moreProducts{{ loop.index }}" aria-expanded="false"> | |
| Show more products <i class="bi bi-chevron-down"></i> | |
| </button> | |
| <div class="collapse" id="moreProducts{{ loop.index }}"> | |
| <div class="row mt-2"> | |
| {% for product in product_info[result.name][2:] %} | |
| <div class="col-md-6 mb-2"> | |
| <div class="card product-card"> | |
| <div class="card-body"> | |
| <span class="badge bg-secondary resource-badge"> | |
| {% if 'indiamart' in product.link %}IndiaMart{% else %}Krishi Seva{% endif %} | |
| </span> | |
| <h6 class="card-title" style="font-size: 0.9rem;">{{ product.title }}</h6> | |
| <p class="card-text small">{{ product.snippet[:100] }}{% if product.snippet|length > 100 %}...{% endif %}</p> | |
| <a href="{{ product.link }}" class="btn btn-sm btn-outline-primary" target="_blank">View Product</a> | |
| </div> | |
| </div> | |
| </div> | |
| {% endfor %} | |
| </div> | |
| </div> | |
| </div> | |
| {% endif %} | |
| </div> | |
| {% endif %} | |
| </div> | |
| {% endfor %} | |
| <div class="mt-4 alert alert-info"> | |
| <h5 class="alert-heading">Disclaimer</h5> | |
| <p>The product recommendations are provided for informational purposes only. Always consult with a local agricultural expert for specific recommendations suited to your region and conditions.</p> | |
| </div> | |
| <div class="container mb-5"> | |
| <div class="result-container"> | |
| <h4>Send us your Feedback</h4> | |
| <p>We would love to hear your thoughts on the analysis.</p> | |
| <form action="/feedback" method="post"> | |
| <input type="hidden" name="plant_name" value="{{ plant_name }}"> | |
| <div class="mb-3"> | |
| <textarea class="form-control" name="feedback" rows="4" placeholder="Your feedback here..." required></textarea> | |
| </div> | |
| <button type="submit" class="btn btn-primary">Submit Feedback</button> | |
| </form> | |
| </div> | |
| </div> | |
| </div> | |
| {% else %} | |
| <div class="result-container"> | |
| <div class="alert alert-warning"> | |
| <h4 class="alert-heading">Analysis Inconclusive</h4> | |
| <p>We couldn't determine with certainty whether your plant has issues. This could be due to:</p> | |
| <ul> | |
| <li>Image quality or lighting issues</li> | |
| <li>Early stage symptoms that aren't clearly visible</li> | |
| <li>A rare condition not in our database</li> | |
| </ul> | |
| <hr> | |
| <p class="mb-0">Try uploading a clearer image or one that shows the affected areas more directly.</p> | |
| </div> | |
| </div> | |
| {% endif %} | |
| </div> | |
| </div> | |
| </div> | |
| <footer class="bg-dark text-white text-center py-3"> | |
| <div class="container"> | |
| <p class="mb-0">Plant Disease Detector © 2025 | Powered by Gemini AI</p> | |
| </div> | |
| </footer> | |
| <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script> | |
| <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css"> | |
| </body> | |
| </html> |