{% extends 'mainapp/base.html' %}
{% load static %}

{% block title %}Кубсат{% endblock %}

{% block content %}
<div class="container-fluid px-3">
    <div class="row mb-3">
        <div class="col-12">
            <h2>Кубсат</h2>
        </div>
    </div>
    
    <!-- Вкладки -->
    <ul class="nav nav-tabs mb-3" id="kubsatTabs" role="tablist">
        <li class="nav-item" role="presentation">
            <button class="nav-link active" id="requests-tab" data-bs-toggle="tab" data-bs-target="#requests" 
                type="button" role="tab" aria-controls="requests" aria-selected="true">
                <i class="bi bi-list-task"></i> Заявки
            </button>
        </li>
        <li class="nav-item" role="presentation">
            <button class="nav-link" id="filters-tab" data-bs-toggle="tab" data-bs-target="#filters" 
                type="button" role="tab" aria-controls="filters" aria-selected="false">
                <i class="bi bi-funnel"></i> Фильтры и экспорт
            </button>
        </li>
    </ul>
    
    <div class="tab-content" id="kubsatTabsContent">
        <!-- Вкладка заявок -->
        <div class="tab-pane fade show active" id="requests" role="tabpanel" aria-labelledby="requests-tab">
            {% include 'mainapp/components/_source_requests_tab.html' %}
        </div>
        
        <!-- Вкладка фильтров -->
        <div class="tab-pane fade" id="filters" role="tabpanel" aria-labelledby="filters-tab">
            {% include 'mainapp/components/_kubsat_filters_tab.html' %}
        </div>
    </div>
</div>

<!-- Модальное окно создания/редактирования заявки -->
<div class="modal fade" id="requestModal" tabindex="-1" aria-labelledby="requestModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-xl">
        <div class="modal-content">
            <div class="modal-header bg-primary text-white">
                <h5 class="modal-title" id="requestModalLabel">
                    <i class="bi bi-plus-circle"></i> <span id="requestModalTitle">Создать заявку</span>
                </h5>
                <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Закрыть"></button>
            </div>
            <div class="modal-body">
                <form id="requestForm">
                    {% csrf_token %}
                    <input type="hidden" id="requestId" name="request_id" value="">
                    
                    <!-- Источник и статус -->
                    <div class="row">
                        <div class="col-md-3 mb-3">
                            <label for="requestSource" class="form-label">Источник (ID)</label>
                            <div class="input-group">
                                <span class="input-group-text">#</span>
                                <input type="number" class="form-control" id="requestSourceId" name="source" 
                                    placeholder="ID источника" min="1" onchange="loadSourceData()">
                                <button type="button" class="btn btn-outline-secondary" onclick="loadSourceData()">
                                    <i class="bi bi-search"></i>
                                </button>
                            </div>
                            <div id="sourceCheckResult" class="form-text"></div>
                        </div>
                        <div class="col-md-3 mb-3">
                            <label for="requestSatellite" class="form-label">Спутник</label>
                            <select class="form-select" id="requestSatellite" name="satellite">
                                <option value="">-</option>
                                {% for sat in satellites %}
                                <option value="{{ sat.id }}">{{ sat.name }}</option>
                                {% endfor %}
                            </select>
                        </div>
                        <div class="col-md-3 mb-3">
                            <label for="requestStatus" class="form-label">Статус</label>
                            <select class="form-select" id="requestStatus" name="status">
                                <option value="planned">Запланировано</option>
                                <option value="conducted">Проведён</option>
                                <option value="successful">Успешно</option>
                                <option value="no_correlation">Нет корреляции</option>
                                <option value="no_signal">Нет сигнала в спектре</option>
                                <option value="unsuccessful">Неуспешно</option>
                                <option value="downloading">Скачивание</option>
                                <option value="processing">Обработка</option>
                                <option value="result_received">Результат получен</option>
                            </select>
                        </div>
                        <div class="col-md-3 mb-3">
                            <label for="requestPriority" class="form-label">Приоритет</label>
                            <select class="form-select" id="requestPriority" name="priority">
                                <option value="low">Низкий</option>
                                <option value="medium" selected>Средний</option>
                                <option value="high">Высокий</option>
                            </select>
                        </div>
                    </div>
                    
                    <!-- Частоты и перенос -->
                    <div class="row">
                        <div class="col-md-3 mb-3">
                            <label for="requestDownlink" class="form-label">Downlink (МГц)</label>
                            <input type="number" step="0.01" class="form-control" id="requestDownlink" name="downlink" 
                                placeholder="Частота downlink">
                        </div>
                        <div class="col-md-3 mb-3">
                            <label for="requestUplink" class="form-label">Uplink (МГц)</label>
                            <input type="number" step="0.01" class="form-control" id="requestUplink" name="uplink" 
                                placeholder="Частота uplink">
                        </div>
                        <div class="col-md-3 mb-3">
                            <label for="requestTransfer" class="form-label">Перенос (МГц)</label>
                            <input type="number" step="0.01" class="form-control" id="requestTransfer" name="transfer" 
                                placeholder="Перенос">
                        </div>
                        <div class="col-md-3 mb-3">
                            <label for="requestRegion" class="form-label">Район</label>
                            <input type="text" class="form-control" id="requestRegion" name="region" 
                                placeholder="Район/местоположение">
                        </div>
                    </div>
                    
                    <!-- Данные источника (только для чтения) -->
                    <div class="card bg-light mb-3" id="sourceDataCard" style="display: none;">
                        <div class="card-header py-2">
                            <small class="text-muted"><i class="bi bi-info-circle"></i> Данные источника</small>
                        </div>
                        <div class="card-body py-2">
                            <div class="row">
                                <div class="col-md-4 mb-2">
                                    <label class="form-label small text-muted mb-0">Имя точки</label>
                                    <input type="text" class="form-control form-control-sm" id="requestObjitemName" readonly>
                                </div>
                                <div class="col-md-4 mb-2">
                                    <label class="form-label small text-muted mb-0">Модуляция</label>
                                    <input type="text" class="form-control form-control-sm" id="requestModulation" readonly>
                                </div>
                                <div class="col-md-4 mb-2">
                                    <label class="form-label small text-muted mb-0">Символьная скорость</label>
                                    <input type="text" class="form-control form-control-sm" id="requestSymbolRate" readonly>
                                </div>
                            </div>
                        </div>
                    </div>
                    
                    <!-- Координаты ГСО -->
                    <div class="row">
                        <div class="col-md-3 mb-3">
                            <label for="requestCoordsLat" class="form-label">Широта ГСО</label>
                            <input type="number" step="0.000001" class="form-control" id="requestCoordsLat" name="coords_lat" 
                                placeholder="Например: 55.751244">
                        </div>
                        <div class="col-md-3 mb-3">
                            <label for="requestCoordsLon" class="form-label">Долгота ГСО</label>
                            <input type="number" step="0.000001" class="form-control" id="requestCoordsLon" name="coords_lon" 
                                placeholder="Например: 37.618423">
                        </div>
                        <div class="col-md-3 mb-3">
                            <label for="requestCoordsSourceLat" class="form-label">Широта источника</label>
                            <input type="number" step="0.000001" class="form-control" id="requestCoordsSourceLat" name="coords_source_lat" 
                                placeholder="Например: 55.751244">
                        </div>
                        <div class="col-md-3 mb-3">
                            <label for="requestCoordsSourceLon" class="form-label">Долгота источника</label>
                            <input type="number" step="0.000001" class="form-control" id="requestCoordsSourceLon" name="coords_source_lon" 
                                placeholder="Например: 37.618423">
                        </div>
                    </div>
                    
                    <!-- Координаты объекта -->
                    <div class="row">
                        <div class="col-md-3 mb-3">
                            <label for="requestCoordsObjectLat" class="form-label">Широта объекта</label>
                            <input type="number" step="0.000001" class="form-control" id="requestCoordsObjectLat" name="coords_object_lat" 
                                placeholder="Например: 55.751244">
                        </div>
                        <div class="col-md-3 mb-3">
                            <label for="requestCoordsObjectLon" class="form-label">Долгота объекта</label>
                            <input type="number" step="0.000001" class="form-control" id="requestCoordsObjectLon" name="coords_object_lon" 
                                placeholder="Например: 37.618423">
                        </div>
                    </div>
                    
                    <!-- Даты -->
                    <div class="row">
                        <div class="col-md-4 mb-3">
                            <label for="requestPlannedAt" class="form-label">Дата и время планирования</label>
                            <input type="datetime-local" class="form-control" id="requestPlannedAt" name="planned_at">
                        </div>
                        <div class="col-md-4 mb-3">
                            <label for="requestDate" class="form-label">Дата заявки</label>
                            <input type="date" class="form-control" id="requestDate" name="request_date">
                        </div>
                        <div class="col-md-4 mb-3">
                            <label for="requestCardDate" class="form-label">Дата формирования карточки</label>
                            <input type="date" class="form-control" id="requestCardDate" name="card_date">
                        </div>
                    </div>
                    
                    <!-- Результаты -->
                    <div class="row">
                        <div class="col-md-6 mb-3">
                            <label for="requestGsoSuccess" class="form-label">ГСО успешно?</label>
                            <select class="form-select" id="requestGsoSuccess" name="gso_success">
                                <option value="">-</option>
                                <option value="true">Да</option>
                                <option value="false">Нет</option>
                            </select>
                        </div>
                        <div class="col-md-6 mb-3">
                            <label for="requestKubsatSuccess" class="form-label">Кубсат успешно?</label>
                            <select class="form-select" id="requestKubsatSuccess" name="kubsat_success">
                                <option value="">-</option>
                                <option value="true">Да</option>
                                <option value="false">Нет</option>
                            </select>
                        </div>
                    </div>
                    
                    <!-- Комментарий -->
                    <div class="mb-3">
                        <label for="requestComment" class="form-label">Комментарий</label>
                        <textarea class="form-control" id="requestComment" name="comment" rows="2"></textarea>
                    </div>
                </form>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Отмена</button>
                <button type="button" class="btn btn-primary" onclick="saveRequest()">
                    <i class="bi bi-check-lg"></i> Сохранить
                </button>
            </div>
        </div>
    </div>
</div>

<!-- Модальное окно истории статусов -->
<div class="modal fade" id="historyModal" tabindex="-1" aria-labelledby="historyModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header bg-info text-white">
                <h5 class="modal-title" id="historyModalLabel">
                    <i class="bi bi-clock-history"></i> История изменений статуса
                </h5>
                <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Закрыть"></button>
            </div>
            <div class="modal-body" id="historyModalBody">
                <div class="text-center py-4">
                    <div class="spinner-border text-primary" role="status">
                        <span class="visually-hidden">Загрузка...</span>
                    </div>
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Закрыть</button>
            </div>
        </div>
    </div>
</div>

<script>
// Загрузка данных источника по ID
function loadSourceData() {
    const sourceId = document.getElementById('requestSourceId').value;
    const resultDiv = document.getElementById('sourceCheckResult');
    const sourceDataCard = document.getElementById('sourceDataCard');
    
    if (!sourceId) {
        resultDiv.innerHTML = '<span class="text-warning">Введите ID источника</span>';
        sourceDataCard.style.display = 'none';
        clearSourceData();
        return;
    }
    
    resultDiv.innerHTML = '<span class="text-muted">Загрузка...</span>';
    
    fetch(`{% url 'mainapp:source_data_api' source_id=0 %}`.replace('0', sourceId))
        .then(response => response.json())
        .then(data => {
            if (data.found) {
                resultDiv.innerHTML = `<span class="text-success"><i class="bi bi-check-circle"></i> Источник #${sourceId} найден</span>`;
                
                // Заполняем данные источника (только для чтения)
                document.getElementById('requestObjitemName').value = data.objitem_name || '-';
                document.getElementById('requestModulation').value = data.modulation || '-';
                document.getElementById('requestSymbolRate').value = data.symbol_rate || '-';
                
                // Заполняем координаты ГСО (редактируемые)
                // if (data.coords_lat !== null) {
                //     document.getElementById('requestCoordsLat').value = data.coords_lat.toFixed(6);
                // }
                // if (data.coords_lon !== null) {
                //     document.getElementById('requestCoordsLon').value = data.coords_lon.toFixed(6);
                // }
                
                // Заполняем данные из транспондера
                if (data.downlink) {
                    document.getElementById('requestDownlink').value = data.downlink;
                }
                if (data.uplink) {
                    document.getElementById('requestUplink').value = data.uplink;
                }
                if (data.transfer) {
                    document.getElementById('requestTransfer').value = data.transfer;
                }
                if (data.satellite_id) {
                    document.getElementById('requestSatellite').value = data.satellite_id;
                }
                
                sourceDataCard.style.display = 'block';
            } else {
                resultDiv.innerHTML = `<span class="text-danger"><i class="bi bi-x-circle"></i> Источник #${sourceId} не найден</span>`;
                sourceDataCard.style.display = 'none';
                clearSourceData();
            }
        })
        .catch(error => {
            resultDiv.innerHTML = `<span class="text-danger"><i class="bi bi-x-circle"></i> Источник #${sourceId} не найден</span>`;
            sourceDataCard.style.display = 'none';
            clearSourceData();
        });
}

// Очистка данных источника
function clearSourceData() {
    document.getElementById('requestObjitemName').value = '';
    document.getElementById('requestModulation').value = '';
    document.getElementById('requestSymbolRate').value = '';
    document.getElementById('requestCoordsLat').value = '';
    document.getElementById('requestCoordsLon').value = '';
    document.getElementById('requestCoordsSourceLat').value = '';
    document.getElementById('requestCoordsSourceLon').value = '';
    document.getElementById('requestCoordsObjectLat').value = '';
    document.getElementById('requestCoordsObjectLon').value = '';
    document.getElementById('requestDownlink').value = '';
    document.getElementById('requestUplink').value = '';
    document.getElementById('requestTransfer').value = '';
    document.getElementById('requestRegion').value = '';
    document.getElementById('requestSatellite').value = '';
    document.getElementById('requestCardDate').value = '';
}

// Открытие модального окна создания заявки
function openCreateRequestModal(sourceId = null) {
    document.getElementById('requestModalTitle').textContent = 'Создать заявку';
    document.getElementById('requestForm').reset();
    document.getElementById('requestId').value = '';
    document.getElementById('sourceCheckResult').innerHTML = '';
    document.getElementById('sourceDataCard').style.display = 'none';
    clearSourceData();
    
    if (sourceId) {
        document.getElementById('requestSourceId').value = sourceId;
        loadSourceData();
    }
    
    const modal = new bootstrap.Modal(document.getElementById('requestModal'));
    modal.show();
}

// Открытие модального окна редактирования заявки
function openEditRequestModal(requestId) {
    document.getElementById('requestModalTitle').textContent = 'Редактировать заявку';
    document.getElementById('sourceCheckResult').innerHTML = '';
    
    fetch(`/api/source-request/${requestId}/`)
        .then(response => response.json())
        .then(data => {
            document.getElementById('requestId').value = data.id;
            document.getElementById('requestSourceId').value = data.source_id || '';
            document.getElementById('requestSatellite').value = data.satellite_id || '';
            document.getElementById('requestStatus').value = data.status;
            document.getElementById('requestPriority').value = data.priority;
            document.getElementById('requestPlannedAt').value = data.planned_at || '';
            document.getElementById('requestDate').value = data.request_date || '';
            document.getElementById('requestCardDate').value = data.card_date || '';
            document.getElementById('requestGsoSuccess').value = data.gso_success === null ? '' : data.gso_success.toString();
            document.getElementById('requestKubsatSuccess').value = data.kubsat_success === null ? '' : data.kubsat_success.toString();
            document.getElementById('requestComment').value = data.comment || '';
            
            // Заполняем данные источника
            document.getElementById('requestObjitemName').value = data.objitem_name || '-';
            document.getElementById('requestModulation').value = data.modulation || '-';
            document.getElementById('requestSymbolRate').value = data.symbol_rate || '-';
            
            // Заполняем частоты
            document.getElementById('requestDownlink').value = data.downlink || '';
            document.getElementById('requestUplink').value = data.uplink || '';
            document.getElementById('requestTransfer').value = data.transfer || '';
            document.getElementById('requestRegion').value = data.region || '';
            
            // Заполняем координаты ГСО
            if (data.coords_lat !== null) {
                document.getElementById('requestCoordsLat').value = data.coords_lat.toFixed(6);
            } else {
                document.getElementById('requestCoordsLat').value = '';
            }
            if (data.coords_lon !== null) {
                document.getElementById('requestCoordsLon').value = data.coords_lon.toFixed(6);
            } else {
                document.getElementById('requestCoordsLon').value = '';
            }
            
            // Заполняем координаты источника
            if (data.coords_source_lat !== null) {
                document.getElementById('requestCoordsSourceLat').value = data.coords_source_lat.toFixed(6);
            } else {
                document.getElementById('requestCoordsSourceLat').value = '';
            }
            if (data.coords_source_lon !== null) {
                document.getElementById('requestCoordsSourceLon').value = data.coords_source_lon.toFixed(6);
            } else {
                document.getElementById('requestCoordsSourceLon').value = '';
            }
            
            // Заполняем координаты объекта
            if (data.coords_object_lat !== null) {
                document.getElementById('requestCoordsObjectLat').value = data.coords_object_lat.toFixed(6);
            } else {
                document.getElementById('requestCoordsObjectLat').value = '';
            }
            if (data.coords_object_lon !== null) {
                document.getElementById('requestCoordsObjectLon').value = data.coords_object_lon.toFixed(6);
            } else {
                document.getElementById('requestCoordsObjectLon').value = '';
            }
            
            document.getElementById('sourceDataCard').style.display = data.source_id ? 'block' : 'none';
            
            const modal = new bootstrap.Modal(document.getElementById('requestModal'));
            modal.show();
        })
        .catch(error => {
            console.error('Error loading request:', error);
            alert('Ошибка загрузки данных заявки');
        });
}

// Сохранение заявки
function saveRequest() {
    const form = document.getElementById('requestForm');
    const formData = new FormData(form);
    const requestId = document.getElementById('requestId').value;
    
    const url = requestId 
        ? `/source-requests/${requestId}/edit/`
        : '{% url "mainapp:source_request_create" %}';
    
    fetch(url, {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
            'X-CSRFToken': formData.get('csrfmiddlewaretoken'),
            'X-Requested-With': 'XMLHttpRequest'
        },
        body: new URLSearchParams(formData)
    })
    .then(response => response.json())
    .then(result => {
        if (result.success) {
            // Properly close modal and remove backdrop
            const modalEl = document.getElementById('requestModal');
            const modalInstance = bootstrap.Modal.getInstance(modalEl);
            if (modalInstance) {
                modalInstance.hide();
            }
            // Remove any remaining backdrops
            document.querySelectorAll('.modal-backdrop').forEach(el => el.remove());
            document.body.classList.remove('modal-open');
            document.body.style.removeProperty('overflow');
            document.body.style.removeProperty('padding-right');
            
            location.reload();
        } else {
            alert('Ошибка: ' + JSON.stringify(result.errors));
        }
    })
    .catch(error => {
        console.error('Error saving request:', error);
        alert('Ошибка сохранения заявки');
    });
}

// Удаление заявки
function deleteRequest(requestId) {
    if (!confirm('Вы уверены, что хотите удалить эту заявку?')) {
        return;
    }
    
    fetch(`/source-requests/${requestId}/delete/`, {
        method: 'POST',
        headers: {
            'X-CSRFToken': document.querySelector('[name=csrfmiddlewaretoken]').value
        }
    })
    .then(response => response.json())
    .then(result => {
        if (result.success) {
            location.reload();
        } else {
            alert('Ошибка: ' + result.error);
        }
    })
    .catch(error => {
        console.error('Error deleting request:', error);
        alert('Ошибка удаления заявки');
    });
}

// Показать историю статусов
function showHistory(requestId) {
    const modal = new bootstrap.Modal(document.getElementById('historyModal'));
    modal.show();
    
    const modalBody = document.getElementById('historyModalBody');
    modalBody.innerHTML = '<div class="text-center py-4"><div class="spinner-border text-primary" role="status"><span class="visually-hidden">Загрузка...</span></div></div>';
    
    fetch(`/api/source-request/${requestId}/`)
        .then(response => response.json())
        .then(data => {
            if (data.history && data.history.length > 0) {
                let html = '<table class="table table-sm table-striped"><thead><tr><th>Старый статус</th><th>Новый статус</th><th>Дата изменения</th><th>Пользователь</th></tr></thead><tbody>';
                data.history.forEach(h => {
                    html += `<tr><td>${h.old_status}</td><td>${h.new_status}</td><td>${h.changed_at}</td><td>${h.changed_by}</td></tr>`;
                });
                html += '</tbody></table>';
                modalBody.innerHTML = html;
            } else {
                modalBody.innerHTML = '<div class="alert alert-info">История изменений пуста</div>';
            }
        })
        .catch(error => {
            modalBody.innerHTML = '<div class="alert alert-danger">Ошибка загрузки истории</div>';
        });
}

// Функция для показа модального окна LyngSat
function showLyngsatModal(lyngsatId) {
    const modal = new bootstrap.Modal(document.getElementById('lyngsatModal'));
    modal.show();

    const modalBody = document.getElementById('lyngsatModalBody');
    modalBody.innerHTML = '<div class="text-center py-4"><div class="spinner-border text-primary" role="status"><span class="visually-hidden">Загрузка...</span></div></div>';

    fetch('/api/lyngsat/' + lyngsatId + '/')
        .then(response => {
            if (!response.ok) {
                throw new Error('Ошибка загрузки данных');
            }
            return response.json();
        })
        .then(data => {
            let html = '<div class="container-fluid"><div class="row g-3">' +
                '<div class="col-md-6"><div class="card h-100">' +
                '<div class="card-header bg-light"><strong><i class="bi bi-info-circle"></i> Основная информация</strong></div>' +
                '<div class="card-body"><table class="table table-sm table-borderless mb-0"><tbody>' +
                '<tr><td class="text-muted" style="width: 40%;">Спутник:</td><td><strong>' + data.satellite + '</strong></td></tr>' +
                '<tr><td class="text-muted">Частота:</td><td><strong>' + data.frequency + ' МГц</strong></td></tr>' +
                '<tr><td class="text-muted">Поляризация:</td><td><span class="badge bg-info">' + data.polarization + '</span></td></tr>' +
                '<tr><td class="text-muted">Канал:</td><td>' + data.channel_info + '</td></tr>' +
                '</tbody></table></div></div></div>' +
                '<div class="col-md-6"><div class="card h-100">' +
                '<div class="card-header bg-light"><strong><i class="bi bi-gear"></i> Технические параметры</strong></div>' +
                '<div class="card-body"><table class="table table-sm table-borderless mb-0"><tbody>' +
                '<tr><td class="text-muted" style="width: 40%;">Модуляция:</td><td><span class="badge bg-secondary">' + data.modulation + '</span></td></tr>' +
                '<tr><td class="text-muted">Стандарт:</td><td><span class="badge bg-secondary">' + data.standard + '</span></td></tr>' +
                '<tr><td class="text-muted">Сим. скорость:</td><td><strong>' + data.sym_velocity + ' БОД</strong></td></tr>' +
                '<tr><td class="text-muted">FEC:</td><td>' + data.fec + '</td></tr>' +
                '</tbody></table></div></div></div>' +
                '<div class="col-12"><div class="card">' +
                '<div class="card-header bg-light"><strong><i class="bi bi-clock-history"></i> Дополнительная информация</strong></div>' +
                '<div class="card-body"><div class="row">' +
                '<div class="col-md-6"><p class="mb-2"><span class="text-muted">Последнее обновление:</span><br><strong>' + data.last_update + '</strong></p></div>' +
                '<div class="col-md-6">' + (data.url ? '<p class="mb-2"><span class="text-muted">Ссылка на объект:</span><br>' +
                '<a href="' + data.url + '" target="_blank" class="btn btn-sm btn-outline-primary">' +
                '<i class="bi bi-link-45deg"></i> Открыть на LyngSat</a></p>' : '') +
                '</div></div></div></div></div></div></div>';
            modalBody.innerHTML = html;
        })
        .catch(error => {
            modalBody.innerHTML = '<div class="alert alert-danger" role="alert">' +
                '<i class="bi bi-exclamation-triangle"></i> ' + error.message + '</div>';
        });
}

document.addEventListener('DOMContentLoaded', function() {
    // Restore active tab from URL parameter
    const urlParams = new URLSearchParams(window.location.search);
    const activeTab = urlParams.get('tab');
    if (activeTab === 'filters') {
        const filtersTab = document.getElementById('filters-tab');
        const requestsTab = document.getElementById('requests-tab');
        const filtersPane = document.getElementById('filters');
        const requestsPane = document.getElementById('requests');
        
        if (filtersTab && requestsTab) {
            requestsTab.classList.remove('active');
            requestsTab.setAttribute('aria-selected', 'false');
            filtersTab.classList.add('active');
            filtersTab.setAttribute('aria-selected', 'true');
            
            requestsPane.classList.remove('show', 'active');
            filtersPane.classList.add('show', 'active');
        }
    }
});
</script>

<!-- LyngSat Data Modal -->
<div class="modal fade" id="lyngsatModal" tabindex="-1" aria-labelledby="lyngsatModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header bg-primary text-white">
                <h5 class="modal-title" id="lyngsatModalLabel">
                    <i class="bi bi-tv"></i> Данные объекта LyngSat
                </h5>
                <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"
                    aria-label="Закрыть"></button>
            </div>
            <div class="modal-body" id="lyngsatModalBody">
                <div class="text-center py-4">
                    <div class="spinner-border text-primary" role="status">
                        <span class="visually-hidden">Загрузка...</span>
                    </div>
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Закрыть</button>
            </div>
        </div>
    </div>
</div>
{% endblock %}
