{% extends "base.html" %} {% block content %} <div class="container my-4"> <h2 class="text-center mb-4">Lista wszystkich backupów</h2> <!-- Formularz filtrowania --> <div class="card mb-4 shadow-sm"> <div class="card-body"> <form method="GET" action="{{ url_for('all_files') }}" class="row g-2"> <div class="col-md-4"> <input type="text" name="search" placeholder="Wyszukaj backupy" class="form-control" value="{{ search }}"> </div> <div class="col-md-3"> <select name="sort_by" class="form-select"> <option value="created_at" {% if sort_by=='created_at' %}selected{% endif %}>Data</option> <option value="file_path" {% if sort_by=='file_path' %}selected{% endif %}>Nazwa pliku</option> </select> </div> <div class="col-md-3"> <select name="order" class="form-select"> <option value="desc" {% if order=='desc' %}selected{% endif %}>Malejąco</option> <option value="asc" {% if order=='asc' %}selected{% endif %}>Rosnąco</option> </select> </div> <div class="col-md-2"> <button type="submit" class="btn btn-primary w-100">Filtruj</button> </div> </form> </div> </div> <!-- Tabela z backupami --> <div class="card shadow-sm mb-4"> <div class="card-body"> <div class="table-responsive"> <table class="table table-striped table-hover mb-0"> <thead class="table-dark"> <tr> <th style="width: 2%;"><input type="checkbox" id="select_all"></th> <th>Router</th> <th>Typ</th> <th>Nazwa pliku</th> <th>Data</th> <th>Rozmiar</th> <th>Pobierz</th> <th>Wyślij mailem</th> <th>Wgraj</th> <th>Podgląd</th> <th>Usuń</th> </tr> </thead> <tbody> {% for file in files %} <tr> <td><input type="checkbox" name="backup_id" value="{{ file.id }}" form="mass_actions_form"></td> <td>{{ file.router.name }}</td> <td> {% if file.backup_type == 'export' %} <span class="badge bg-success">Export</span> {% elif file.backup_type == 'binary' %} <span class="badge bg-info">Binary</span> {% else %} <span class="badge bg-secondary">{{ file.backup_type }}</span> {% endif %} </td> <td> {% if file.backup_type == 'binary' %} <span data-bs-toggle="tooltip" title="Checksum: {{ file.checksum }}">{{ file.file_path|basename }}</span> {% else %} {{ file.file_path|basename }} {% endif %} </td> <td>{{ file.created_at.strftime("%Y-%m-%d %H:%M:%S") }}</td> <td>{{ file.file_path|filesize }}</td> <td> <a href="{{ url_for('download_file', filename=file.file_path|basename) }}" class="btn btn-lg btn-info"> <i class="bi bi-download"></i> </a> </td> <td> <form action="{{ url_for('send_by_email', backup_id=file.id) }}" method="POST" class="d-inline"> <input type="hidden" name="next" value="{{ url_for('all_files') }}"> <button type="submit" class="btn btn-lg btn-warning"> <i class="bi bi-envelope"></i> </button> </form> </td> <td> {% if file.backup_type == 'binary' %} <form action="{{ url_for('upload_backup', router_id=file.router.id, backup_id=file.id) }}" method="POST" class="d-inline"> <input type="hidden" name="next" value="{{ url_for('all_files') }}"> <button type="submit" class="btn btn-lg btn-secondary"> <i class="bi bi-upload"></i> </button> </form> {% else %} <em>N/D</em> {% endif %} </td> <td> {% if file.backup_type == 'export' %} <a href="{{ url_for('view_export', backup_id=file.id) }}" class="btn btn-lg btn-outline-primary"> <i class="bi bi-eye"></i> </a> {% else %} <em>N/D</em> {% endif %} </td> <td> <form action="{{ url_for('delete_backup', backup_id=file.id) }}" method="POST" class="d-inline" onsubmit="return confirm('Na pewno usunąć backup?');"> <input type="hidden" name="next" value="{{ url_for('all_files') }}"> <button type="submit" class="btn btn-lg btn-danger"> <i class="bi bi-trash"></i> </button> </form> </td> </tr> {% endfor %} </tbody> </table> </div> <p class="mt-3"><strong>Łączny rozmiar:</strong> {{ total_size|filesize }}</p> </div> </div> <!-- Formularz dla masowych akcji (jeden formularz) --> <form id="mass_actions_form" action="{{ url_for('mass_actions') }}" method="POST" class="d-flex justify-content-end mb-4"> <button type="submit" name="action" value="download" class="btn btn-lg btn-success me-2"> <i class="bi bi-file-earmark-zip"></i> Pobierz zip zaznaczonych </button> <button type="submit" name="action" value="delete" class="btn btn-lg btn-danger" onclick="return confirm('Na pewno usunąć zaznaczone pliki?');"> <i class="bi bi-trash"></i> Usuń zaznaczone pliki </button> </form> </div> <script> document.getElementById('select_all').addEventListener('change', function(e) { var checkboxes = document.querySelectorAll('input[name="backup_id"]'); checkboxes.forEach(cb => cb.checked = e.target.checked); }); </script> {% endblock %}