Spaces:
Configuration error
Configuration error
| <html lang="fa" dir="rtl"> | |
| <head> | |
| <meta charset="utf-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1"> | |
| <title>داشبورد بهینهسازی پروژه PVC</title> | |
| <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.rtl.min.css" rel="stylesheet"> | |
| <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> | |
| <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}"> | |
| </head> | |
| <body> | |
| <nav class="navbar navbar-dark bg-dark border-bottom border-secondary shadow-sm"> | |
| <div class="container-fluid d-flex align-items-center"> | |
| <img src="{{ url_for('static', filename='images/logo.png') }}" alt="Logo" height="120" class="me-2 rounded"> | |
| <span class="navbar-brand fw-bold text-accent">🏭 Petro Optima</span> | |
| </div> | |
| </nav> | |
| <main class="px-4 py-3"> | |
| {% with messages = get_flashed_messages(with_categories=true) %} | |
| {% if messages %} | |
| {% for category, msg in messages %} | |
| <div class="alert alert-{{ 'info' if category=='info' else ('danger' if category=='danger' else ('success' if category=='success' else 'warning')) }} alert-dismissible fade show custom-alert" role="alert"> | |
| {{ msg }} | |
| <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button> | |
| </div> | |
| {% endfor %} | |
| {% endif %} | |
| {% endwith %} | |
| {% block content %}{% endblock %} | |
| </main> | |
| <footer class="text-center text-muted py-3 border-top border-secondary"> | |
| </footer> | |
| <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script> | |
| <script src="{{ url_for('static', filename='js/charts.js') }}"></script> | |
| <div id="loading-overlay" class="d-none"> | |
| <div class="loading-spinner"></div> | |
| <div class="loading-text">در حال انجام محاسبات، لطفاً صبر کنید...</div> | |
| </div> | |
| <script> | |
| document.addEventListener("DOMContentLoaded", function() { | |
| const forms = document.querySelectorAll("form"); | |
| forms.forEach(form => { | |
| form.addEventListener("submit", function() { | |
| const overlay = document.getElementById("loading-overlay"); | |
| overlay.classList.remove("d-none"); | |
| }); | |
| }); | |
| }); | |
| </script> | |
| </body> | |
| </html> | |