Доделал страницу со всеми объектами
@@ -6,7 +6,7 @@
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<link rel="icon" href="{% static 'favicon.ico' %}" type="image/x-icon">
|
<link rel="icon" href="{% static 'favicon.ico' %}" type="image/x-icon">
|
||||||
<title>{% block title %}Геолокация{% endblock %}</title>
|
<title>{% block title %}Геолокация{% endblock %}</title>
|
||||||
|
<link href="{% static 'bootstrap-icons/bootstrap-icons.css' %}" rel="stylesheet">
|
||||||
<link href="{% static 'bootstrap/bootstrap.min.css' %}" rel="stylesheet">
|
<link href="{% static 'bootstrap/bootstrap.min.css' %}" rel="stylesheet">
|
||||||
|
|
||||||
<!-- Дополнительные стили (если нужно) -->
|
<!-- Дополнительные стили (если нужно) -->
|
||||||
|
|||||||
@@ -381,6 +381,7 @@
|
|||||||
<!-- Подключаем Leaflet и его плагины -->
|
<!-- Подключаем Leaflet и его плагины -->
|
||||||
{% leaflet_js %}
|
{% leaflet_js %}
|
||||||
{% leaflet_css %}
|
{% leaflet_css %}
|
||||||
|
<script src="{% static 'leaflet-markers/js/leaflet-color-markers.js' %}"></script>
|
||||||
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -428,13 +429,94 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
|
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
|
||||||
}).addTo(map);
|
}).addTo(map);
|
||||||
|
|
||||||
// Маркеры для разных типов координат
|
// Определяем цвета для маркеров
|
||||||
const markers = {
|
const colors = {
|
||||||
geo: L.marker([55.75, 37.62], { draggable: true, color: 'blue' }).addTo(map),
|
geo: 'blue',
|
||||||
kupsat: L.marker([55.75, 37.61], { draggable: true, color: 'red' }).addTo(map),
|
kupsat: 'red',
|
||||||
valid: L.marker([55.75, 37.63], { draggable: true, color: 'green' }).addTo(map)
|
valid: 'green'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Функция для создания иконки маркера
|
||||||
|
function createMarkerIcon(color) {
|
||||||
|
return L.icon({
|
||||||
|
iconUrl: '{% static "leaflet-markers/img/marker-icon-" %}' + color + '.png',
|
||||||
|
shadowUrl: `{% static 'leaflet-markers/img/marker-shadow.png' %}`,
|
||||||
|
iconSize: [25, 41],
|
||||||
|
iconAnchor: [12, 41],
|
||||||
|
popupAnchor: [1, -34],
|
||||||
|
shadowSize: [41, 41]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
const editableLayerGroup = new L.FeatureGroup();
|
||||||
|
map.addLayer(editableLayerGroup);
|
||||||
|
|
||||||
|
// Маркеры
|
||||||
|
const markers = {};
|
||||||
|
function createMarker(latFieldId, lngFieldId, position, color, name) {
|
||||||
|
const marker = L.marker(position, {
|
||||||
|
draggable: false,
|
||||||
|
icon: createMarkerIcon(color),
|
||||||
|
title: name
|
||||||
|
}).addTo(editableLayerGroup);
|
||||||
|
marker.bindPopup(name);
|
||||||
|
|
||||||
|
// Синхронизация при изменении формы
|
||||||
|
function syncFromForm() {
|
||||||
|
const lat = parseFloat(document.getElementById(latFieldId).value);
|
||||||
|
const lng = parseFloat(document.getElementById(lngFieldId).value);
|
||||||
|
if (!isNaN(lat) && !isNaN(lng)) {
|
||||||
|
marker.setLatLng([lat, lng]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Синхронизация при перетаскивании (только если активировано)
|
||||||
|
marker.on('dragend', function(event) {
|
||||||
|
const latLng = event.target.getLatLng();
|
||||||
|
document.getElementById(latFieldId).value = latLng.lat.toFixed(6);
|
||||||
|
document.getElementById(lngFieldId).value = latLng.lng.toFixed(6);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Добавляем методы для управления
|
||||||
|
marker.enableEditing = function() {
|
||||||
|
this.dragging.enable();
|
||||||
|
this.openPopup();
|
||||||
|
};
|
||||||
|
|
||||||
|
marker.disableEditing = function() {
|
||||||
|
this.dragging.disable();
|
||||||
|
this.closePopup();
|
||||||
|
};
|
||||||
|
|
||||||
|
marker.syncFromForm = syncFromForm;
|
||||||
|
|
||||||
|
return marker;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Создаем маркеры
|
||||||
|
markers.geo = createMarker(
|
||||||
|
'id_geo_latitude',
|
||||||
|
'id_geo_longitude',
|
||||||
|
[55.75, 37.62],
|
||||||
|
colors.geo,
|
||||||
|
'Геолокация'
|
||||||
|
);
|
||||||
|
|
||||||
|
markers.kupsat = createMarker(
|
||||||
|
'id_kupsat_latitude',
|
||||||
|
'id_kupsat_longitude',
|
||||||
|
[55.75, 37.61],
|
||||||
|
colors.kupsat,
|
||||||
|
'Кубсат'
|
||||||
|
);
|
||||||
|
|
||||||
|
markers.valid = createMarker(
|
||||||
|
'id_valid_latitude',
|
||||||
|
'id_valid_longitude',
|
||||||
|
[55.75, 37.63],
|
||||||
|
colors.valid,
|
||||||
|
'Оперативник'
|
||||||
|
);
|
||||||
|
|
||||||
// Устанавливаем начальные координаты из полей формы
|
// Устанавливаем начальные координаты из полей формы
|
||||||
function initMarkersFromForm() {
|
function initMarkersFromForm() {
|
||||||
const geoLat = parseFloat(document.getElementById('id_geo_latitude').value) || 55.75;
|
const geoLat = parseFloat(document.getElementById('id_geo_latitude').value) || 55.75;
|
||||||
@@ -453,16 +535,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
map.setView(markers.geo.getLatLng(), 10);
|
map.setView(markers.geo.getLatLng(), 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Обновляем координаты в форме при перетаскивании маркеров
|
// Настройка формы для синхронизации с маркерами
|
||||||
function setupMarkerDrag(marker, latFieldId, lngFieldId, color) {
|
|
||||||
marker.on('dragend', function(event) {
|
|
||||||
const latLng = event.target.getLatLng();
|
|
||||||
document.getElementById(latFieldId).value = latLng.lat.toFixed(6);
|
|
||||||
document.getElementById(lngFieldId).value = latLng.lng.toFixed(6);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Обновляем положение маркера при изменении координат в форме
|
|
||||||
function setupFormChange(latFieldId, lngFieldId, marker) {
|
function setupFormChange(latFieldId, lngFieldId, marker) {
|
||||||
const latField = document.getElementById(latFieldId);
|
const latField = document.getElementById(latFieldId);
|
||||||
const lngField = document.getElementById(lngFieldId);
|
const lngField = document.getElementById(lngFieldId);
|
||||||
@@ -482,24 +555,126 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
|
|
||||||
// Инициализация
|
// Инициализация
|
||||||
initMarkersFromForm();
|
initMarkersFromForm();
|
||||||
|
// Настройка формы для синхронизации с маркерами
|
||||||
// Настройка маркеров
|
|
||||||
setupMarkerDrag(markers.geo, 'id_geo_latitude', 'id_geo_longitude', 'blue');
|
|
||||||
setupMarkerDrag(markers.kupsat, 'id_kupsat_latitude', 'id_kupsat_longitude', 'red');
|
|
||||||
setupMarkerDrag(markers.valid, 'id_valid_latitude', 'id_valid_longitude', 'green');
|
|
||||||
|
|
||||||
// Настройка формы
|
|
||||||
setupFormChange('id_geo_latitude', 'id_geo_longitude', markers.geo);
|
setupFormChange('id_geo_latitude', 'id_geo_longitude', markers.geo);
|
||||||
setupFormChange('id_kupsat_latitude', 'id_kupsat_longitude', markers.kupsat);
|
setupFormChange('id_kupsat_latitude', 'id_kupsat_longitude', markers.kupsat);
|
||||||
setupFormChange('id_valid_latitude', 'id_valid_longitude', markers.valid);
|
setupFormChange('id_valid_latitude', 'id_valid_longitude', markers.valid);
|
||||||
|
// --- УПРАВЛЕНИЕ РЕДАКТИРОВАНИЕМ ---
|
||||||
|
// Кнопки редактирования
|
||||||
|
const editControlsDiv = L.DomUtil.create('div', 'map-controls');
|
||||||
|
editControlsDiv.style.position = 'absolute';
|
||||||
|
editControlsDiv.style.top = '10px';
|
||||||
|
editControlsDiv.style.right = '10px';
|
||||||
|
editControlsDiv.style.zIndex = '1000';
|
||||||
|
editControlsDiv.style.background = 'white';
|
||||||
|
editControlsDiv.style.padding = '10px';
|
||||||
|
editControlsDiv.style.borderRadius = '4px';
|
||||||
|
editControlsDiv.style.boxShadow = '0 0 10px rgba(0,0,0,0.2)';
|
||||||
|
editControlsDiv.innerHTML = `
|
||||||
|
<div class="map-controls">
|
||||||
|
<button type="button" id="edit-btn" class="map-control-btn edit">Редактировать</button>
|
||||||
|
<button type="button" id="save-btn" class="map-control-btn save" disabled>Сохранить</button>
|
||||||
|
<button type="button" id="cancel-btn" class="map-control-btn cancel" disabled>Отмена</button>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
map.getContainer().appendChild(editControlsDiv);
|
||||||
|
|
||||||
|
let isEditing = false;
|
||||||
|
|
||||||
|
// Сохраняем начальные координаты для отмены
|
||||||
|
const initialPositions = {
|
||||||
|
geo: markers.geo.getLatLng(),
|
||||||
|
kupsat: markers.kupsat.getLatLng(),
|
||||||
|
valid: markers.valid.getLatLng()
|
||||||
|
};
|
||||||
|
|
||||||
|
// Включение редактирования
|
||||||
|
document.getElementById('edit-btn').addEventListener('click', function() {
|
||||||
|
if (isEditing) return;
|
||||||
|
|
||||||
|
isEditing = true;
|
||||||
|
document.getElementById('edit-btn').classList.add('active');
|
||||||
|
document.getElementById('save-btn').disabled = false;
|
||||||
|
document.getElementById('cancel-btn').disabled = false;
|
||||||
|
|
||||||
|
// Включаем drag для всех маркеров
|
||||||
|
Object.values(markers).forEach(marker => {
|
||||||
|
marker.enableEditing();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Показываем подсказку
|
||||||
|
L.popup()
|
||||||
|
.setLatLng(map.getCenter())
|
||||||
|
.setContent('Перетаскивайте маркеры. Нажмите "Сохранить" или "Отмена".')
|
||||||
|
.openOn(map);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Сохранение изменений
|
||||||
|
document.getElementById('save-btn').addEventListener('click', function() {
|
||||||
|
if (!isEditing) return;
|
||||||
|
|
||||||
|
isEditing = false;
|
||||||
|
document.getElementById('edit-btn').classList.remove('active');
|
||||||
|
document.getElementById('save-btn').disabled = true;
|
||||||
|
document.getElementById('cancel-btn').disabled = true;
|
||||||
|
|
||||||
|
// Отключаем редактирование
|
||||||
|
Object.values(markers).forEach(marker => {
|
||||||
|
marker.disableEditing();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Обновляем начальные позиции
|
||||||
|
initialPositions.geo = markers.geo.getLatLng();
|
||||||
|
initialPositions.kupsat = markers.kupsat.getLatLng();
|
||||||
|
initialPositions.valid = markers.valid.getLatLng();
|
||||||
|
|
||||||
|
// Убираем попап подсказки
|
||||||
|
map.closePopup();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Отмена изменений
|
||||||
|
document.getElementById('cancel-btn').addEventListener('click', function() {
|
||||||
|
if (!isEditing) return;
|
||||||
|
|
||||||
|
isEditing = false;
|
||||||
|
document.getElementById('edit-btn').classList.remove('active');
|
||||||
|
document.getElementById('save-btn').disabled = true;
|
||||||
|
document.getElementById('cancel-btn').disabled = true;
|
||||||
|
|
||||||
|
// Возвращаем маркеры на исходные позиции
|
||||||
|
markers.geo.setLatLng(initialPositions.geo);
|
||||||
|
markers.kupsat.setLatLng(initialPositions.kupsat);
|
||||||
|
markers.valid.setLatLng(initialPositions.valid);
|
||||||
|
|
||||||
|
// Отключаем редактирование
|
||||||
|
Object.values(markers).forEach(marker => {
|
||||||
|
marker.disableEditing();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Синхронизируем форму с исходными значениями
|
||||||
|
document.getElementById('id_geo_latitude').value = initialPositions.geo.lat.toFixed(6);
|
||||||
|
document.getElementById('id_geo_longitude').value = initialPositions.geo.lng.toFixed(6);
|
||||||
|
|
||||||
|
document.getElementById('id_kupsat_latitude').value = initialPositions.kupsat.lat.toFixed(6);
|
||||||
|
document.getElementById('id_kupsat_longitude').value = initialPositions.kupsat.lng.toFixed(6);
|
||||||
|
|
||||||
|
document.getElementById('id_valid_latitude').value = initialPositions.valid.lat.toFixed(6);
|
||||||
|
document.getElementById('id_valid_longitude').value = initialPositions.valid.lng.toFixed(6);
|
||||||
|
map.closePopup();
|
||||||
|
});
|
||||||
|
|
||||||
// Легенда
|
// Легенда
|
||||||
const legend = L.control({ position: 'bottomright' });
|
const legend = L.control({ position: 'bottomright' });
|
||||||
|
|
||||||
legend.onAdd = function() {
|
legend.onAdd = function() {
|
||||||
const div = L.DomUtil.create('div', 'info legend');
|
const div = L.DomUtil.create('div', 'info legend');
|
||||||
|
div.style.fontSize = '14px';
|
||||||
|
div.style.backgroundColor = 'white';
|
||||||
|
div.style.padding = '10px';
|
||||||
|
div.style.borderRadius = '4px';
|
||||||
|
div.style.boxShadow = '0 0 10px rgba(0,0,0,0.2)';
|
||||||
div.innerHTML = `
|
div.innerHTML = `
|
||||||
<h6>Легенда</h6>
|
<h5>Легенда</h5>
|
||||||
<div><span style="color: blue; font-weight: bold;">•</span> Геолокация</div>
|
<div><span style="color: blue; font-weight: bold;">•</span> Геолокация</div>
|
||||||
<div><span style="color: red; font-weight: bold;">•</span> Кубсат</div>
|
<div><span style="color: red; font-weight: bold;">•</span> Кубсат</div>
|
||||||
<div><span style="color: green; font-weight: bold;">•</span> Оперативники</div>
|
<div><span style="color: green; font-weight: bold;">•</span> Оперативники</div>
|
||||||
|
|||||||
@@ -109,52 +109,57 @@
|
|||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label class="dropdown-item">
|
<label class="dropdown-item">
|
||||||
<input type="checkbox" class="column-toggle" data-column="9" checked onchange="toggleColumn(this)"> Геолокация
|
<input type="checkbox" class="column-toggle" data-column="9" checked onchange="toggleColumn(this)"> Время ГЛ
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label class="dropdown-item">
|
<label class="dropdown-item">
|
||||||
<input type="checkbox" class="column-toggle" data-column="10" checked onchange="toggleColumn(this)"> Кубсат
|
<input type="checkbox" class="column-toggle" data-column="10" checked onchange="toggleColumn(this)"> Геолокация
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label class="dropdown-item">
|
<label class="dropdown-item">
|
||||||
<input type="checkbox" class="column-toggle" data-column="11" checked onchange="toggleColumn(this)"> Опер. отд
|
<input type="checkbox" class="column-toggle" data-column="11" checked onchange="toggleColumn(this)"> Кубсат
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label class="dropdown-item">
|
<label class="dropdown-item">
|
||||||
<input type="checkbox" class="column-toggle" data-column="12" checked onchange="toggleColumn(this)"> Гео-куб, км
|
<input type="checkbox" class="column-toggle" data-column="12" checked onchange="toggleColumn(this)"> Опер. отд
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label class="dropdown-item">
|
<label class="dropdown-item">
|
||||||
<input type="checkbox" class="column-toggle" data-column="13" checked onchange="toggleColumn(this)"> Гео-опер, км
|
<input type="checkbox" class="column-toggle" data-column="13" checked onchange="toggleColumn(this)"> Гео-куб, км
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label class="dropdown-item">
|
<label class="dropdown-item">
|
||||||
<input type="checkbox" class="column-toggle" data-column="14" checked onchange="toggleColumn(this)"> Куб-опер, км
|
<input type="checkbox" class="column-toggle" data-column="14" checked onchange="toggleColumn(this)"> Гео-опер, км
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label class="dropdown-item">
|
<label class="dropdown-item">
|
||||||
<input type="checkbox" class="column-toggle" data-column="15" checked onchange="toggleColumn(this)"> Обновлено
|
<input type="checkbox" class="column-toggle" data-column="15" checked onchange="toggleColumn(this)"> Куб-опер, км
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label class="dropdown-item">
|
<label class="dropdown-item">
|
||||||
<input type="checkbox" class="column-toggle" data-column="16" checked onchange="toggleColumn(this)"> Кем (обновление)
|
<input type="checkbox" class="column-toggle" data-column="16" checked onchange="toggleColumn(this)"> Обновлено
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label class="dropdown-item">
|
<label class="dropdown-item">
|
||||||
<input type="checkbox" class="column-toggle" data-column="17" checked onchange="toggleColumn(this)"> Создано
|
<input type="checkbox" class="column-toggle" data-column="17" checked onchange="toggleColumn(this)"> Кем (обновление)
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label class="dropdown-item">
|
<label class="dropdown-item">
|
||||||
<input type="checkbox" class="column-toggle" data-column="18" checked onchange="toggleColumn(this)"> Кем (создание)
|
<input type="checkbox" class="column-toggle" data-column="18" checked onchange="toggleColumn(this)"> Создано
|
||||||
|
</label>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<label class="dropdown-item">
|
||||||
|
<input type="checkbox" class="column-toggle" data-column="19" checked onchange="toggleColumn(this)"> Кем (создание)
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -354,24 +359,118 @@
|
|||||||
<th scope="col" class="text-center" style="width: 3%;">
|
<th scope="col" class="text-center" style="width: 3%;">
|
||||||
<input type="checkbox" id="select-all" class="form-check-input">
|
<input type="checkbox" id="select-all" class="form-check-input">
|
||||||
</th>
|
</th>
|
||||||
<th scope="col">Имя</th>
|
|
||||||
<th scope="col">Спутник</th>
|
<!-- Столбец "Имя" -->
|
||||||
<th scope="col">Част, МГц</th>
|
<th scope="col">
|
||||||
<th scope="col">Полоса, МГц</th>
|
<a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}sort={% if sort == 'name' %}-name{% elif sort == '-name' %}name{% else %}name{% endif %}" class="text-white text-decoration-none d-inline-flex align-items-center">
|
||||||
<th scope="col">Поляризация</th>
|
Имя
|
||||||
<th scope="col">Сим. V</th>
|
{% if sort == 'name' %} <i class="bi bi-sort-up ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% elif sort == '-name' %} <i class="bi bi-sort-down ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% else %} <i class="bi bi-arrow-down-up ms-1"></i> {% endif %}
|
||||||
<th scope="col">Модул</th>
|
</a>
|
||||||
<th scope="col">ОСШ</th>
|
</th>
|
||||||
|
|
||||||
|
<!-- Столбец "Спутник" -->
|
||||||
|
<th scope="col">
|
||||||
|
<a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}sort={% if sort == 'satellite' %}-satellite{% elif sort == '-satellite' %}satellite{% else %}satellite{% endif %}" class="text-white text-decoration-none d-inline-flex align-items-center">
|
||||||
|
Спутник
|
||||||
|
{% if sort == 'satellite' %} <i class="bi bi-sort-up ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% elif sort == '-satellite' %} <i class="bi bi-sort-down ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% else %} <i class="bi bi-arrow-down-up ms-1"></i> {% endif %}
|
||||||
|
</a>
|
||||||
|
</th>
|
||||||
|
|
||||||
|
<!-- Столбец "Част, МГц" -->
|
||||||
|
<th scope="col">
|
||||||
|
<a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}sort={% if sort == 'frequency' %}-frequency{% elif sort == '-frequency' %}frequency{% else %}frequency{% endif %}" class="text-white text-decoration-none d-inline-flex align-items-center">
|
||||||
|
Част, МГц
|
||||||
|
{% if sort == 'frequency' %} <i class="bi bi-sort-up ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% elif sort == '-frequency' %} <i class="bi bi-sort-down ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% else %} <i class="bi bi-arrow-down-up ms-1"></i> {% endif %}
|
||||||
|
</a>
|
||||||
|
</th>
|
||||||
|
|
||||||
|
<!-- Столбец "Полоса, МГц" -->
|
||||||
|
<th scope="col">
|
||||||
|
<a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}sort={% if sort == 'freq_range' %}-freq_range{% elif sort == '-freq_range' %}freq_range{% else %}freq_range{% endif %}" class="text-white text-decoration-none d-inline-flex align-items-center">
|
||||||
|
Полоса, МГц
|
||||||
|
{% if sort == 'freq_range' %} <i class="bi bi-sort-up ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% elif sort == '-freq_range' %} <i class="bi bi-sort-down ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% else %} <i class="bi bi-arrow-down-up ms-1"></i> {% endif %}
|
||||||
|
</a>
|
||||||
|
</th>
|
||||||
|
|
||||||
|
<!-- Столбец "Поляризация" -->
|
||||||
|
<th scope="col">
|
||||||
|
<a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}sort={% if sort == 'polarization' %}-polarization{% elif sort == '-polarization' %}polarization{% else %}polarization{% endif %}" class="text-white text-decoration-none d-inline-flex align-items-center">
|
||||||
|
Поляризация
|
||||||
|
{% if sort == 'polarization' %} <i class="bi bi-sort-up ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% elif sort == '-polarization' %} <i class="bi bi-sort-down ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% else %} <i class="bi bi-arrow-down-up ms-1"></i> {% endif %}
|
||||||
|
</a>
|
||||||
|
</th>
|
||||||
|
|
||||||
|
<!-- Столбец "Сим. V" -->
|
||||||
|
<th scope="col">
|
||||||
|
<a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}sort={% if sort == 'bod_velocity' %}-bod_velocity{% elif sort == '-bod_velocity' %}bod_velocity{% else %}bod_velocity{% endif %}" class="text-white text-decoration-none d-inline-flex align-items-center">
|
||||||
|
Сим. V
|
||||||
|
{% if sort == 'bod_velocity' %} <i class="bi bi-sort-up ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% elif sort == '-bod_velocity' %} <i class="bi bi-sort-down ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% else %} <i class="bi bi-arrow-down-up ms-1"></i> {% endif %}
|
||||||
|
</a>
|
||||||
|
</th>
|
||||||
|
|
||||||
|
<!-- Столбец "Модул" -->
|
||||||
|
<th scope="col">
|
||||||
|
<a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}sort={% if sort == 'modulation' %}-modulation{% elif sort == '-modulation' %}modulation{% else %}modulation{% endif %}" class="text-white text-decoration-none d-inline-flex align-items-center">
|
||||||
|
Модул
|
||||||
|
{% if sort == 'modulation' %} <i class="bi bi-sort-up ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% elif sort == '-modulation' %} <i class="bi bi-sort-down ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% else %} <i class="bi bi-arrow-down-up ms-1"></i> {% endif %}
|
||||||
|
</a>
|
||||||
|
</th>
|
||||||
|
|
||||||
|
<!-- Столбец "ОСШ" -->
|
||||||
|
<th scope="col">
|
||||||
|
<a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}sort={% if sort == 'snr' %}-snr{% elif sort == '-snr' %}snr{% else %}snr{% endif %}" class="text-white text-decoration-none d-inline-flex align-items-center">
|
||||||
|
ОСШ
|
||||||
|
{% if sort == 'snr' %} <i class="bi bi-sort-up ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% elif sort == '-snr' %} <i class="bi bi-sort-down ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% else %} <i class="bi bi-arrow-down-up ms-1"></i> {% endif %}
|
||||||
|
</a>
|
||||||
|
</th>
|
||||||
|
|
||||||
|
<!-- Столбец "Время ГЛ" -->
|
||||||
|
<th scope="col">
|
||||||
|
<a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}sort={% if sort == 'geo_timestamp' %}-geo_timestamp{% elif sort == '-geo_timestamp' %}geo_timestamp{% else %}geo_timestamp{% endif %}" class="text-white text-decoration-none d-inline-flex align-items-center">
|
||||||
|
Время ГЛ
|
||||||
|
{% if sort == 'geo_timestamp' %} <i class="bi bi-sort-up ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% elif sort == '-geo_timestamp' %} <i class="bi bi-sort-down ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% else %} <i class="bi bi-arrow-down-up ms-1"></i> {% endif %}
|
||||||
|
</a>
|
||||||
|
</th>
|
||||||
|
|
||||||
|
<!-- Столбец "Геолокация" - без сортировки -->
|
||||||
<th scope="col">Геолокация</th>
|
<th scope="col">Геолокация</th>
|
||||||
|
|
||||||
|
<!-- Столбец "Кубсат" - без сортировки -->
|
||||||
<th scope="col">Кубсат</th>
|
<th scope="col">Кубсат</th>
|
||||||
|
|
||||||
|
<!-- Столбец "Опер. отд" - без сортировки -->
|
||||||
<th scope="col">Опер. отд</th>
|
<th scope="col">Опер. отд</th>
|
||||||
|
|
||||||
|
<!-- Столбец "Гео-куб, км" - без сортировки -->
|
||||||
<th scope="col">Гео-куб, км</th>
|
<th scope="col">Гео-куб, км</th>
|
||||||
|
|
||||||
|
<!-- Столбец "Гео-опер, км" - без сортировки -->
|
||||||
<th scope="col">Гео-опер, км</th>
|
<th scope="col">Гео-опер, км</th>
|
||||||
|
|
||||||
|
<!-- Столбец "Куб-опер, км" - без сортировки -->
|
||||||
<th scope="col">Куб-опер, км</th>
|
<th scope="col">Куб-опер, км</th>
|
||||||
<th scope="col">Обновлено</th>
|
|
||||||
<th scope="col">Кем</th>
|
<!-- Столбец "Обновлено" -->
|
||||||
<th scope="col">Создано</th>
|
<th scope="col">
|
||||||
<th scope="col">Кем (создание)</th>
|
<a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}sort={% if sort == 'updated_at' %}-updated_at{% elif sort == '-updated_at' %}updated_at{% else %}updated_at{% endif %}" class="text-white text-decoration-none d-inline-flex align-items-center">
|
||||||
|
Обновлено
|
||||||
|
{% if sort == 'updated_at' %} <i class="bi bi-sort-up ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% elif sort == '-updated_at' %} <i class="bi bi-sort-down ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% else %} <i class="bi bi-arrow-down-up ms-1"></i> {% endif %}
|
||||||
|
</a>
|
||||||
|
</th>
|
||||||
|
|
||||||
|
<!-- Столбец "Кем (обновление)" - без сортировки -->
|
||||||
|
<th scope="col">Кем(обн)</th>
|
||||||
|
|
||||||
|
<!-- Столбец "Создано" -->
|
||||||
|
<th scope="col">
|
||||||
|
<a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}sort={% if sort == 'created_at' %}-created_at{% elif sort == '-created_at' %}created_at{% else %}created_at{% endif %}" class="text-white text-decoration-none d-inline-flex align-items-center">
|
||||||
|
Создано
|
||||||
|
{% if sort == 'created_at' %} <i class="bi bi-sort-up ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% elif sort == '-created_at' %} <i class="bi bi-sort-down ms-1"></i> <a href="?{% for key, value in request.GET.items %}{% if key != 'page' and key != 'sort' %}{{ key }}={{ value }}&{% endif %}{% endfor %}" class="text-white ms-1"><i class="bi bi-x-lg"></i></a> {% else %} <i class="bi bi-arrow-down-up ms-1"></i> {% endif %}
|
||||||
|
</a>
|
||||||
|
</th>
|
||||||
|
|
||||||
|
<!-- Столбец "Кем (создание)" - без сортировки -->
|
||||||
|
<th scope="col">Кем(созд)</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@@ -388,6 +487,7 @@
|
|||||||
<td>{{ item.bod_velocity }}</td>
|
<td>{{ item.bod_velocity }}</td>
|
||||||
<td>{{ item.modulation }}</td>
|
<td>{{ item.modulation }}</td>
|
||||||
<td>{{ item.snr }}</td>
|
<td>{{ item.snr }}</td>
|
||||||
|
<td>{{ item.geo_timestamp|date:"d.m.Y H:i" }}</td>
|
||||||
<td>{{ item.geo_coords }}</td>
|
<td>{{ item.geo_coords }}</td>
|
||||||
<td>{{ item.kupsat_coords }}</td>
|
<td>{{ item.kupsat_coords }}</td>
|
||||||
<td>{{ item.valid_coords }}</td>
|
<td>{{ item.valid_coords }}</td>
|
||||||
@@ -419,7 +519,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- JavaScript for checkbox functionality and filters -->
|
|
||||||
<script>
|
<script>
|
||||||
function toggleColumn(checkbox) {
|
function toggleColumn(checkbox) {
|
||||||
const columnIndex = parseInt(checkbox.getAttribute('data-column'));
|
const columnIndex = parseInt(checkbox.getAttribute('data-column'));
|
||||||
@@ -446,7 +546,6 @@ function toggleAllColumns(selectAllCheckbox) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
// Select/Deselect all checkboxes
|
|
||||||
const selectAllCheckbox = document.getElementById('select-all');
|
const selectAllCheckbox = document.getElementById('select-all');
|
||||||
const itemCheckboxes = document.querySelectorAll('.item-checkbox');
|
const itemCheckboxes = document.querySelectorAll('.item-checkbox');
|
||||||
|
|
||||||
@@ -457,7 +556,6 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// Update select all checkbox state based on individual selections
|
|
||||||
itemCheckboxes.forEach(checkbox => {
|
itemCheckboxes.forEach(checkbox => {
|
||||||
checkbox.addEventListener('change', function() {
|
checkbox.addEventListener('change', function() {
|
||||||
const allChecked = Array.from(itemCheckboxes).every(cb => cb.checked);
|
const allChecked = Array.from(itemCheckboxes).every(cb => cb.checked);
|
||||||
@@ -592,16 +690,28 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
|
|
||||||
// Initialize column visibility - hide creation columns by default
|
// Initialize column visibility - hide creation columns by default
|
||||||
function initColumnVisibility() {
|
function initColumnVisibility() {
|
||||||
const creationDateCheckbox = document.querySelector('input[data-column="17"]');
|
const creationDateCheckbox = document.querySelector('input[data-column="18"]');
|
||||||
const creationUserCheckbox = document.querySelector('input[data-column="18"]');
|
const creationUserCheckbox = document.querySelector('input[data-column="19"]');
|
||||||
|
const creationDistanceGOpCheckbox = document.querySelector('input[data-column="14"]');
|
||||||
|
const creationDistanceKubOpCheckbox = document.querySelector('input[data-column="15"]');
|
||||||
|
|
||||||
|
if (creationDistanceGOpCheckbox) {
|
||||||
|
creationDistanceGOpCheckbox.checked = false;
|
||||||
|
toggleColumn(creationDistanceGOpCheckbox);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (creationDistanceKubOpCheckbox) {
|
||||||
|
creationDistanceKubOpCheckbox.checked = false;
|
||||||
|
toggleColumn(creationDistanceKubOpCheckbox);
|
||||||
|
}
|
||||||
|
|
||||||
if (creationDateCheckbox) {
|
if (creationDateCheckbox) {
|
||||||
creationDateCheckbox.checked = false; // Uncheck to hide by default
|
creationDateCheckbox.checked = false;
|
||||||
toggleColumn(creationDateCheckbox);
|
toggleColumn(creationDateCheckbox);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (creationUserCheckbox) {
|
if (creationUserCheckbox) {
|
||||||
creationUserCheckbox.checked = false; // Uncheck to hide by default
|
creationUserCheckbox.checked = false;
|
||||||
toggleColumn(creationUserCheckbox);
|
toggleColumn(creationUserCheckbox);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ from django.contrib.admin.views.decorators import staff_member_required
|
|||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.utils.decorators import method_decorator
|
from django.utils.decorators import method_decorator
|
||||||
from django.views import View
|
from django.views import View
|
||||||
|
from django.db.models import OuterRef, Subquery
|
||||||
from django.views.generic import TemplateView, FormView, UpdateView, DeleteView, CreateView
|
from django.views.generic import TemplateView, FormView, UpdateView, DeleteView, CreateView
|
||||||
from django.contrib.auth.mixins import UserPassesTestMixin, LoginRequiredMixin
|
from django.contrib.auth.mixins import UserPassesTestMixin, LoginRequiredMixin
|
||||||
from django.contrib.auth import logout
|
from django.contrib.auth import logout
|
||||||
@@ -34,7 +35,7 @@ from .forms import (
|
|||||||
ParameterForm,
|
ParameterForm,
|
||||||
GeoForm
|
GeoForm
|
||||||
)
|
)
|
||||||
from .models import ObjItem
|
from .models import ObjItem, Modulation, Polarization
|
||||||
from .clusters import get_clusters
|
from .clusters import get_clusters
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
@@ -321,12 +322,11 @@ class ObjItemListView(LoginRequiredMixin, View):
|
|||||||
def get(self, request):
|
def get(self, request):
|
||||||
satellites = Satellite.objects.filter(parameters__objitems__isnull=False).distinct().order_by('name')
|
satellites = Satellite.objects.filter(parameters__objitems__isnull=False).distinct().order_by('name')
|
||||||
|
|
||||||
# Get selected satellite from query parameters
|
|
||||||
selected_sat_id = request.GET.get('satellite_id')
|
selected_sat_id = request.GET.get('satellite_id')
|
||||||
page_number = request.GET.get('page', 1)
|
page_number = request.GET.get('page', 1)
|
||||||
items_per_page = request.GET.get('items_per_page', '50')
|
items_per_page = request.GET.get('items_per_page', '50')
|
||||||
|
sort_param = request.GET.get('sort', '')
|
||||||
|
|
||||||
# Get filter parameters
|
|
||||||
freq_min = request.GET.get('freq_min')
|
freq_min = request.GET.get('freq_min')
|
||||||
freq_max = request.GET.get('freq_max')
|
freq_max = request.GET.get('freq_max')
|
||||||
range_min = request.GET.get('range_min')
|
range_min = request.GET.get('range_min')
|
||||||
@@ -347,22 +347,17 @@ class ObjItemListView(LoginRequiredMixin, View):
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
items_per_page = 50
|
items_per_page = 50
|
||||||
|
|
||||||
# Only filter objects by selected satellite if provided (no data shown by default)
|
objects = ObjItem.objects.none()
|
||||||
objects = ObjItem.objects.none() # Initially empty
|
|
||||||
|
|
||||||
if selected_satellites or selected_sat_id:
|
if selected_satellites or selected_sat_id:
|
||||||
# Handle single satellite from old parameter or multiple from new parameter
|
|
||||||
if selected_sat_id and not selected_satellites:
|
if selected_sat_id and not selected_satellites:
|
||||||
# For backward compatibility - if only single satellite parameter is provided
|
|
||||||
try:
|
try:
|
||||||
selected_sat_id_single = int(selected_sat_id)
|
selected_sat_id_single = int(selected_sat_id)
|
||||||
selected_satellites = [selected_sat_id_single]
|
selected_satellites = [selected_sat_id_single]
|
||||||
except ValueError:
|
except ValueError:
|
||||||
selected_satellites = []
|
selected_satellites = []
|
||||||
|
|
||||||
# Start with the basic filter if any satellites are selected
|
|
||||||
if selected_satellites:
|
if selected_satellites:
|
||||||
# Start with the basic filter - optimized with prefetch_related for all related objects
|
|
||||||
objects = ObjItem.objects.select_related(
|
objects = ObjItem.objects.select_related(
|
||||||
'geo_obj',
|
'geo_obj',
|
||||||
'updated_by__user',
|
'updated_by__user',
|
||||||
@@ -374,7 +369,6 @@ class ObjItemListView(LoginRequiredMixin, View):
|
|||||||
'parameters_obj__standard'
|
'parameters_obj__standard'
|
||||||
).filter(parameters_obj__id_satellite_id__in=selected_satellites)
|
).filter(parameters_obj__id_satellite_id__in=selected_satellites)
|
||||||
else:
|
else:
|
||||||
# If no satellites are selected, start with all objects
|
|
||||||
objects = ObjItem.objects.select_related(
|
objects = ObjItem.objects.select_related(
|
||||||
'geo_obj',
|
'geo_obj',
|
||||||
'updated_by__user',
|
'updated_by__user',
|
||||||
@@ -386,8 +380,6 @@ class ObjItemListView(LoginRequiredMixin, View):
|
|||||||
'parameters_obj__standard'
|
'parameters_obj__standard'
|
||||||
)
|
)
|
||||||
|
|
||||||
# Apply additional filters
|
|
||||||
# Frequency filter
|
|
||||||
if freq_min is not None and freq_min.strip() != '':
|
if freq_min is not None and freq_min.strip() != '':
|
||||||
try:
|
try:
|
||||||
freq_min_val = float(freq_min)
|
freq_min_val = float(freq_min)
|
||||||
@@ -401,7 +393,6 @@ class ObjItemListView(LoginRequiredMixin, View):
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Range filter
|
|
||||||
if range_min is not None and range_min.strip() != '':
|
if range_min is not None and range_min.strip() != '':
|
||||||
try:
|
try:
|
||||||
range_min_val = float(range_min)
|
range_min_val = float(range_min)
|
||||||
@@ -415,7 +406,6 @@ class ObjItemListView(LoginRequiredMixin, View):
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# SNR filter
|
|
||||||
if snr_min is not None and snr_min.strip() != '':
|
if snr_min is not None and snr_min.strip() != '':
|
||||||
try:
|
try:
|
||||||
snr_min_val = float(snr_min)
|
snr_min_val = float(snr_min)
|
||||||
@@ -429,7 +419,6 @@ class ObjItemListView(LoginRequiredMixin, View):
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Symbol rate filter
|
|
||||||
if bod_min is not None and bod_min.strip() != '':
|
if bod_min is not None and bod_min.strip() != '':
|
||||||
try:
|
try:
|
||||||
bod_min_val = float(bod_min)
|
bod_min_val = float(bod_min)
|
||||||
@@ -443,31 +432,25 @@ class ObjItemListView(LoginRequiredMixin, View):
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Modulation filter
|
|
||||||
if selected_modulations:
|
if selected_modulations:
|
||||||
objects = objects.filter(parameters_obj__modulation__id__in=selected_modulations)
|
objects = objects.filter(parameters_obj__modulation__id__in=selected_modulations)
|
||||||
|
|
||||||
# Polarization filter
|
|
||||||
if selected_polarizations:
|
if selected_polarizations:
|
||||||
objects = objects.filter(parameters_obj__polarization__id__in=selected_polarizations)
|
objects = objects.filter(parameters_obj__polarization__id__in=selected_polarizations)
|
||||||
|
|
||||||
# Kupsat coords filter
|
if has_kupsat == '1':
|
||||||
if has_kupsat == '1': # has coords
|
|
||||||
objects = objects.filter(geo_obj__coords_kupsat__isnull=False)
|
objects = objects.filter(geo_obj__coords_kupsat__isnull=False)
|
||||||
elif has_kupsat == '0': # no coords
|
elif has_kupsat == '0':
|
||||||
objects = objects.filter(geo_obj__coords_kupsat__isnull=True)
|
objects = objects.filter(geo_obj__coords_kupsat__isnull=True)
|
||||||
|
|
||||||
# Valid coords filter
|
if has_valid == '1':
|
||||||
if has_valid == '1': # has coords
|
|
||||||
objects = objects.filter(geo_obj__coords_valid__isnull=False)
|
objects = objects.filter(geo_obj__coords_valid__isnull=False)
|
||||||
elif has_valid == '0': # no coords
|
elif has_valid == '0':
|
||||||
objects = objects.filter(geo_obj__coords_valid__isnull=True)
|
objects = objects.filter(geo_obj__coords_valid__isnull=True)
|
||||||
|
|
||||||
# Add search functionality - search only in name and location fields to avoid spatial lookup errors
|
|
||||||
if search_query:
|
if search_query:
|
||||||
search_query = search_query.strip()
|
search_query = search_query.strip()
|
||||||
if search_query:
|
if search_query:
|
||||||
# Search in name and location fields to match displayed text
|
|
||||||
objects = objects.filter(
|
objects = objects.filter(
|
||||||
models.Q(name__icontains=search_query) |
|
models.Q(name__icontains=search_query) |
|
||||||
models.Q(geo_obj__location__icontains=search_query)
|
models.Q(geo_obj__location__icontains=search_query)
|
||||||
@@ -475,22 +458,67 @@ class ObjItemListView(LoginRequiredMixin, View):
|
|||||||
else:
|
else:
|
||||||
selected_sat_id = None
|
selected_sat_id = None
|
||||||
|
|
||||||
# Add pagination
|
first_param_freq_subq = self.get_first_param_subquery('frequency')
|
||||||
|
first_param_range_subq = self.get_first_param_subquery('freq_range')
|
||||||
|
first_param_snr_subq = self.get_first_param_subquery('snr')
|
||||||
|
first_param_bod_subq = self.get_first_param_subquery('bod_velocity')
|
||||||
|
first_param_sat_name_subq = self.get_first_param_subquery('id_satellite__name')
|
||||||
|
first_param_pol_name_subq = self.get_first_param_subquery('polarization__name')
|
||||||
|
first_param_mod_name_subq = self.get_first_param_subquery('modulation__name')
|
||||||
|
|
||||||
|
objects = objects.annotate(
|
||||||
|
first_param_freq=Subquery(first_param_freq_subq),
|
||||||
|
first_param_range=Subquery(first_param_range_subq),
|
||||||
|
first_param_snr=Subquery(first_param_snr_subq),
|
||||||
|
first_param_bod=Subquery(first_param_bod_subq),
|
||||||
|
first_param_sat_name=Subquery(first_param_sat_name_subq),
|
||||||
|
first_param_pol_name=Subquery(first_param_pol_name_subq),
|
||||||
|
first_param_mod_name=Subquery(first_param_mod_name_subq),
|
||||||
|
)
|
||||||
|
|
||||||
|
valid_sort_fields = {
|
||||||
|
'name': 'name',
|
||||||
|
'-name': '-name',
|
||||||
|
'updated_at': 'updated_at',
|
||||||
|
'-updated_at': '-updated_at',
|
||||||
|
'created_at': 'created_at',
|
||||||
|
'-created_at': '-created_at',
|
||||||
|
'updated_by': 'updated_by__user__username',
|
||||||
|
'-updated_by': '-updated_by__user__username',
|
||||||
|
'created_by': 'created_by__user__username',
|
||||||
|
'-created_by': '-created_by__user__username',
|
||||||
|
'geo_timestamp': 'geo_obj__timestamp',
|
||||||
|
'-geo_timestamp': '-geo_obj__timestamp',
|
||||||
|
'frequency': 'first_param_freq',
|
||||||
|
'-frequency': '-first_param_freq',
|
||||||
|
'freq_range': 'first_param_range',
|
||||||
|
'-freq_range': '-first_param_range',
|
||||||
|
'snr': 'first_param_snr',
|
||||||
|
'-snr': '-first_param_snr',
|
||||||
|
'bod_velocity': 'first_param_bod',
|
||||||
|
'-bod_velocity': '-first_param_bod',
|
||||||
|
'satellite': 'first_param_sat_name',
|
||||||
|
'-satellite': '-first_param_sat_name',
|
||||||
|
'polarization': 'first_param_pol_name',
|
||||||
|
'-polarization': '-first_param_pol_name',
|
||||||
|
'modulation': 'first_param_mod_name',
|
||||||
|
'-modulation': '-first_param_mod_name',
|
||||||
|
}
|
||||||
|
|
||||||
|
if sort_param in valid_sort_fields:
|
||||||
|
objects = objects.order_by(valid_sort_fields[sort_param])
|
||||||
|
|
||||||
paginator = Paginator(objects, items_per_page)
|
paginator = Paginator(objects, items_per_page)
|
||||||
page_obj = paginator.get_page(page_number)
|
page_obj = paginator.get_page(page_number)
|
||||||
|
|
||||||
# Prepare the data to include calculated fields for the template
|
|
||||||
processed_objects = []
|
processed_objects = []
|
||||||
for obj in page_obj:
|
for obj in page_obj:
|
||||||
# Get the first parameter using the prefetched relation to avoid additional queries
|
|
||||||
param = None
|
param = None
|
||||||
if hasattr(obj, 'parameters_obj') and obj.parameters_obj.all():
|
if hasattr(obj, 'parameters_obj') and obj.parameters_obj.all():
|
||||||
# Get parameters from the prefetched queryset without triggering new query
|
|
||||||
param_list = list(obj.parameters_obj.all())
|
param_list = list(obj.parameters_obj.all())
|
||||||
if param_list:
|
if param_list:
|
||||||
param = param_list[0] # Get first parameter without additional query
|
param = param_list[0]
|
||||||
|
|
||||||
# Process geo coordinates
|
|
||||||
geo_coords = "-"
|
geo_coords = "-"
|
||||||
kupsat_coords = "-"
|
kupsat_coords = "-"
|
||||||
valid_coords = "-"
|
valid_coords = "-"
|
||||||
@@ -499,7 +527,7 @@ class ObjItemListView(LoginRequiredMixin, View):
|
|||||||
distance_kup_valid = "-"
|
distance_kup_valid = "-"
|
||||||
|
|
||||||
if obj.geo_obj:
|
if obj.geo_obj:
|
||||||
# Format geo coordinates
|
geo_timestamp = obj.geo_obj.timestamp
|
||||||
if obj.geo_obj.coords:
|
if obj.geo_obj.coords:
|
||||||
longitude = obj.geo_obj.coords.coords[0]
|
longitude = obj.geo_obj.coords.coords[0]
|
||||||
latitude = obj.geo_obj.coords.coords[1]
|
latitude = obj.geo_obj.coords.coords[1]
|
||||||
@@ -507,7 +535,6 @@ class ObjItemListView(LoginRequiredMixin, View):
|
|||||||
lat = f"{latitude}N" if latitude > 0 else f"{abs(latitude)}S"
|
lat = f"{latitude}N" if latitude > 0 else f"{abs(latitude)}S"
|
||||||
geo_coords = f"{lat} {lon}"
|
geo_coords = f"{lat} {lon}"
|
||||||
|
|
||||||
# Format kupsat coordinates
|
|
||||||
if obj.geo_obj.coords_kupsat:
|
if obj.geo_obj.coords_kupsat:
|
||||||
longitude = obj.geo_obj.coords_kupsat.coords[0]
|
longitude = obj.geo_obj.coords_kupsat.coords[0]
|
||||||
latitude = obj.geo_obj.coords_kupsat.coords[1]
|
latitude = obj.geo_obj.coords_kupsat.coords[1]
|
||||||
@@ -517,7 +544,6 @@ class ObjItemListView(LoginRequiredMixin, View):
|
|||||||
elif obj.geo_obj.coords_kupsat is not None:
|
elif obj.geo_obj.coords_kupsat is not None:
|
||||||
kupsat_coords = "-"
|
kupsat_coords = "-"
|
||||||
|
|
||||||
# Format valid coordinates
|
|
||||||
if obj.geo_obj.coords_valid:
|
if obj.geo_obj.coords_valid:
|
||||||
longitude = obj.geo_obj.coords_valid.coords[0]
|
longitude = obj.geo_obj.coords_valid.coords[0]
|
||||||
latitude = obj.geo_obj.coords_valid.coords[1]
|
latitude = obj.geo_obj.coords_valid.coords[1]
|
||||||
@@ -527,7 +553,6 @@ class ObjItemListView(LoginRequiredMixin, View):
|
|||||||
elif obj.geo_obj.coords_valid is not None:
|
elif obj.geo_obj.coords_valid is not None:
|
||||||
valid_coords = "-"
|
valid_coords = "-"
|
||||||
|
|
||||||
# Format distances
|
|
||||||
if obj.geo_obj.distance_coords_kup is not None:
|
if obj.geo_obj.distance_coords_kup is not None:
|
||||||
distance_geo_kup = f"{obj.geo_obj.distance_coords_kup:.3f}"
|
distance_geo_kup = f"{obj.geo_obj.distance_coords_kup:.3f}"
|
||||||
|
|
||||||
@@ -537,7 +562,6 @@ class ObjItemListView(LoginRequiredMixin, View):
|
|||||||
if obj.geo_obj.distance_kup_valid is not None:
|
if obj.geo_obj.distance_kup_valid is not None:
|
||||||
distance_kup_valid = f"{obj.geo_obj.distance_kup_valid:.3f}"
|
distance_kup_valid = f"{obj.geo_obj.distance_kup_valid:.3f}"
|
||||||
|
|
||||||
# Extract related object data to avoid additional queries in template
|
|
||||||
satellite_name = "-"
|
satellite_name = "-"
|
||||||
frequency = "-"
|
frequency = "-"
|
||||||
freq_range = "-"
|
freq_range = "-"
|
||||||
@@ -547,21 +571,17 @@ class ObjItemListView(LoginRequiredMixin, View):
|
|||||||
snr = "-"
|
snr = "-"
|
||||||
|
|
||||||
if param:
|
if param:
|
||||||
# Get satellite data directly to avoid additional query
|
|
||||||
if hasattr(param, 'id_satellite') and param.id_satellite:
|
if hasattr(param, 'id_satellite') and param.id_satellite:
|
||||||
satellite_name = param.id_satellite.name if hasattr(param.id_satellite, 'name') else "-"
|
satellite_name = param.id_satellite.name if hasattr(param.id_satellite, 'name') else "-"
|
||||||
|
|
||||||
# Get parameter values directly
|
|
||||||
frequency = f"{param.frequency:.3f}" if param.frequency is not None else "-"
|
frequency = f"{param.frequency:.3f}" if param.frequency is not None else "-"
|
||||||
freq_range = f"{param.freq_range:.3f}" if param.freq_range is not None else "-"
|
freq_range = f"{param.freq_range:.3f}" if param.freq_range is not None else "-"
|
||||||
bod_velocity = f"{param.bod_velocity:.0f}" if param.bod_velocity is not None else "-"
|
bod_velocity = f"{param.bod_velocity:.0f}" if param.bod_velocity is not None else "-"
|
||||||
snr = f"{param.snr:.0f}" if param.snr is not None else "-"
|
snr = f"{param.snr:.0f}" if param.snr is not None else "-"
|
||||||
|
|
||||||
# Get polarization name directly to avoid additional query
|
|
||||||
if hasattr(param, 'polarization') and param.polarization:
|
if hasattr(param, 'polarization') and param.polarization:
|
||||||
polarization_name = param.polarization.name if hasattr(param.polarization, 'name') else "-"
|
polarization_name = param.polarization.name if hasattr(param.polarization, 'name') else "-"
|
||||||
|
|
||||||
# Get modulation name directly to avoid additional query
|
|
||||||
if hasattr(param, 'modulation') and param.modulation:
|
if hasattr(param, 'modulation') and param.modulation:
|
||||||
modulation_name = param.modulation.name if hasattr(param.modulation, 'name') else "-"
|
modulation_name = param.modulation.name if hasattr(param.modulation, 'name') else "-"
|
||||||
|
|
||||||
@@ -575,6 +595,7 @@ class ObjItemListView(LoginRequiredMixin, View):
|
|||||||
'bod_velocity': bod_velocity,
|
'bod_velocity': bod_velocity,
|
||||||
'modulation': modulation_name,
|
'modulation': modulation_name,
|
||||||
'snr': snr,
|
'snr': snr,
|
||||||
|
'geo_timestamp': geo_timestamp,
|
||||||
'geo_coords': geo_coords,
|
'geo_coords': geo_coords,
|
||||||
'kupsat_coords': kupsat_coords,
|
'kupsat_coords': kupsat_coords,
|
||||||
'valid_coords': valid_coords,
|
'valid_coords': valid_coords,
|
||||||
@@ -585,8 +606,6 @@ class ObjItemListView(LoginRequiredMixin, View):
|
|||||||
'obj': obj
|
'obj': obj
|
||||||
})
|
})
|
||||||
|
|
||||||
# Get all modulations and polarizations for filter dropdowns
|
|
||||||
from .models import Modulation, Polarization
|
|
||||||
modulations = Modulation.objects.all()
|
modulations = Modulation.objects.all()
|
||||||
polarizations = Polarization.objects.all()
|
polarizations = Polarization.objects.all()
|
||||||
|
|
||||||
@@ -597,7 +616,6 @@ class ObjItemListView(LoginRequiredMixin, View):
|
|||||||
'processed_objects': processed_objects,
|
'processed_objects': processed_objects,
|
||||||
'items_per_page': items_per_page,
|
'items_per_page': items_per_page,
|
||||||
'available_items_per_page': [50, 100, 500, 1000],
|
'available_items_per_page': [50, 100, 500, 1000],
|
||||||
# Filter values
|
|
||||||
'freq_min': freq_min,
|
'freq_min': freq_min,
|
||||||
'freq_max': freq_max,
|
'freq_max': freq_max,
|
||||||
'range_min': range_min,
|
'range_min': range_min,
|
||||||
@@ -612,15 +630,19 @@ class ObjItemListView(LoginRequiredMixin, View):
|
|||||||
'selected_satellites': [int(x) for x in selected_satellites if x.isdigit()],
|
'selected_satellites': [int(x) for x in selected_satellites if x.isdigit()],
|
||||||
'has_kupsat': has_kupsat,
|
'has_kupsat': has_kupsat,
|
||||||
'has_valid': has_valid,
|
'has_valid': has_valid,
|
||||||
# For filter dropdowns
|
|
||||||
'modulations': modulations,
|
'modulations': modulations,
|
||||||
'polarizations': polarizations,
|
'polarizations': polarizations,
|
||||||
# Enable full width layout
|
|
||||||
'full_width_page': True,
|
'full_width_page': True,
|
||||||
|
'sort': sort_param,
|
||||||
}
|
}
|
||||||
|
|
||||||
return render(request, 'mainapp/objitem_list.html', context)
|
return render(request, 'mainapp/objitem_list.html', context)
|
||||||
|
|
||||||
|
def get_first_param_subquery(self, field_name):
|
||||||
|
return Parameter.objects.filter(
|
||||||
|
objitems=OuterRef('pk')
|
||||||
|
).order_by('id').values(field_name)[:1]
|
||||||
|
|
||||||
class ObjItemUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
|
class ObjItemUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
|
||||||
model = ObjItem
|
model = ObjItem
|
||||||
form_class = ObjItemForm
|
form_class = ObjItemForm
|
||||||
@@ -632,14 +654,10 @@ class ObjItemUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
|
|||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = super().get_context_data(**kwargs)
|
context = super().get_context_data(**kwargs)
|
||||||
|
|
||||||
# Добавляем контекст для карты
|
|
||||||
context['LEAFLET_CONFIG'] = {
|
context['LEAFLET_CONFIG'] = {
|
||||||
'DEFAULT_CENTER': (55.75, 37.62),
|
'DEFAULT_CENTER': (55.75, 37.62),
|
||||||
'DEFAULT_ZOOM': 5,
|
'DEFAULT_ZOOM': 5,
|
||||||
}
|
}
|
||||||
|
|
||||||
# Остальной контекст остается без изменений
|
|
||||||
ParameterFormSet = modelformset_factory(
|
ParameterFormSet = modelformset_factory(
|
||||||
Parameter,
|
Parameter,
|
||||||
form=ParameterForm,
|
form=ParameterForm,
|
||||||
@@ -703,19 +721,19 @@ class ObjItemUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
|
|||||||
geo_longitude = self.request.POST.get('geo_longitude')
|
geo_longitude = self.request.POST.get('geo_longitude')
|
||||||
geo_latitude = self.request.POST.get('geo_latitude')
|
geo_latitude = self.request.POST.get('geo_latitude')
|
||||||
if geo_longitude and geo_latitude:
|
if geo_longitude and geo_latitude:
|
||||||
geo_instance.coords = Point(float(geo_longitude), float(geo_latitude))
|
geo_instance.coords = Point(float(geo_longitude), float(geo_latitude), srid=4326)
|
||||||
|
|
||||||
# Обрабатываем координаты Кубсата
|
# Обрабатываем координаты Кубсата
|
||||||
kupsat_longitude = self.request.POST.get('kupsat_longitude')
|
kupsat_longitude = self.request.POST.get('kupsat_longitude')
|
||||||
kupsat_latitude = self.request.POST.get('kupsat_latitude')
|
kupsat_latitude = self.request.POST.get('kupsat_latitude')
|
||||||
if kupsat_longitude and kupsat_latitude:
|
if kupsat_longitude and kupsat_latitude:
|
||||||
geo_instance.coords_kupsat = Point(float(kupsat_longitude), float(kupsat_latitude))
|
geo_instance.coords_kupsat = Point(float(kupsat_longitude), float(kupsat_latitude), srid=4326)
|
||||||
|
|
||||||
# Обрабатываем координаты оперативников
|
# Обрабатываем координаты оперативников
|
||||||
valid_longitude = self.request.POST.get('valid_longitude')
|
valid_longitude = self.request.POST.get('valid_longitude')
|
||||||
valid_latitude = self.request.POST.get('valid_latitude')
|
valid_latitude = self.request.POST.get('valid_latitude')
|
||||||
if valid_longitude and valid_latitude:
|
if valid_longitude and valid_latitude:
|
||||||
geo_instance.coords_valid = Point(float(valid_longitude), float(valid_latitude))
|
geo_instance.coords_valid = Point(float(valid_longitude), float(valid_latitude), srid=4326)
|
||||||
|
|
||||||
# Обрабатываем дату/время
|
# Обрабатываем дату/время
|
||||||
timestamp_date = self.request.POST.get('timestamp_date')
|
timestamp_date = self.request.POST.get('timestamp_date')
|
||||||
@@ -788,19 +806,19 @@ class ObjItemCreateView(LoginRequiredMixin, UserPassesTestMixin, CreateView):
|
|||||||
geo_longitude = self.request.POST.get('geo_longitude')
|
geo_longitude = self.request.POST.get('geo_longitude')
|
||||||
geo_latitude = self.request.POST.get('geo_latitude')
|
geo_latitude = self.request.POST.get('geo_latitude')
|
||||||
if geo_longitude and geo_latitude:
|
if geo_longitude and geo_latitude:
|
||||||
geo_instance.coords = Point(float(geo_longitude), float(geo_latitude))
|
geo_instance.coords = Point(float(geo_longitude), float(geo_latitude), srid=4326)
|
||||||
|
|
||||||
# Обрабатываем координаты Кубсата
|
# Обрабатываем координаты Кубсата
|
||||||
kupsat_longitude = self.request.POST.get('kupsat_longitude')
|
kupsat_longitude = self.request.POST.get('kupsat_longitude')
|
||||||
kupsat_latitude = self.request.POST.get('kupsat_latitude')
|
kupsat_latitude = self.request.POST.get('kupsat_latitude')
|
||||||
if kupsat_longitude and kupsat_latitude:
|
if kupsat_longitude and kupsat_latitude:
|
||||||
geo_instance.coords_kupsat = Point(float(kupsat_longitude), float(kupsat_latitude))
|
geo_instance.coords_kupsat = Point(float(kupsat_longitude), float(kupsat_latitude), srid=4326)
|
||||||
|
|
||||||
# Обрабатываем координаты оперативников
|
# Обрабатываем координаты оперативников
|
||||||
valid_longitude = self.request.POST.get('valid_longitude')
|
valid_longitude = self.request.POST.get('valid_longitude')
|
||||||
valid_latitude = self.request.POST.get('valid_latitude')
|
valid_latitude = self.request.POST.get('valid_latitude')
|
||||||
if valid_longitude and valid_latitude:
|
if valid_longitude and valid_latitude:
|
||||||
geo_instance.coords_valid = Point(float(valid_longitude), float(valid_latitude))
|
geo_instance.coords_valid = Point(float(valid_longitude), float(valid_latitude), srid=4326)
|
||||||
|
|
||||||
# Обрабатываем дату/время
|
# Обрабатываем дату/время
|
||||||
timestamp_date = self.request.POST.get('timestamp_date')
|
timestamp_date = self.request.POST.get('timestamp_date')
|
||||||
|
|||||||
4
dbapp/static/bootstrap-icons/0-circle-fill.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-0-circle-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M8 4.951c-1.008 0-1.629 1.09-1.629 2.895v.31c0 1.81.627 2.895 1.629 2.895s1.623-1.09 1.623-2.895v-.31c0-1.8-.621-2.895-1.623-2.895"/>
|
||||||
|
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8.012 4.158c1.858 0 2.96-1.582 2.96-3.99V7.84c0-2.426-1.079-3.996-2.936-3.996-1.864 0-2.965 1.588-2.965 3.996v.328c0 2.42 1.09 3.99 2.941 3.99"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 476 B |
4
dbapp/static/bootstrap-icons/0-circle.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-0-circle" viewBox="0 0 16 16">
|
||||||
|
<path d="M7.988 12.158c-1.851 0-2.941-1.57-2.941-3.99V7.84c0-2.408 1.101-3.996 2.965-3.996 1.857 0 2.935 1.57 2.935 3.996v.328c0 2.408-1.101 3.99-2.959 3.99M8 4.951c-1.008 0-1.629 1.09-1.629 2.895v.31c0 1.81.627 2.895 1.629 2.895s1.623-1.09 1.623-2.895v-.31c0-1.8-.621-2.895-1.623-2.895"/>
|
||||||
|
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 507 B |
4
dbapp/static/bootstrap-icons/0-square-fill.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-0-square-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M8 4.951c-1.008 0-1.629 1.09-1.629 2.895v.31c0 1.81.627 2.895 1.629 2.895s1.623-1.09 1.623-2.895v-.31c0-1.8-.621-2.895-1.623-2.895"/>
|
||||||
|
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm5.988 12.158c-1.851 0-2.941-1.57-2.941-3.99V7.84c0-2.408 1.101-3.996 2.965-3.996 1.857 0 2.935 1.57 2.935 3.996v.328c0 2.408-1.101 3.99-2.959 3.99"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 514 B |
4
dbapp/static/bootstrap-icons/0-square.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-0-square" viewBox="0 0 16 16">
|
||||||
|
<path d="M7.988 12.158c-1.851 0-2.941-1.57-2.941-3.99V7.84c0-2.408 1.101-3.996 2.965-3.996 1.857 0 2.935 1.57 2.935 3.996v.328c0 2.408-1.101 3.99-2.959 3.99M8 4.951c-1.008 0-1.629 1.09-1.629 2.895v.31c0 1.81.627 2.895 1.629 2.895s1.623-1.09 1.623-2.895v-.31c0-1.8-.621-2.895-1.623-2.895"/>
|
||||||
|
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 579 B |
3
dbapp/static/bootstrap-icons/1-circle-fill.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-1-circle-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M9.283 4.002H7.971L6.072 5.385v1.271l1.834-1.318h.065V12h1.312z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 250 B |
3
dbapp/static/bootstrap-icons/1-circle.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-1-circle" viewBox="0 0 16 16">
|
||||||
|
<path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M9.283 4.002V12H7.971V5.338h-.065L6.072 6.656V5.385l1.899-1.383z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 279 B |
3
dbapp/static/bootstrap-icons/1-square-fill.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-1-square-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm7.283 4.002V12H7.971V5.338h-.065L6.072 6.656V5.385l1.899-1.383z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 286 B |
4
dbapp/static/bootstrap-icons/1-square.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-1-square" viewBox="0 0 16 16">
|
||||||
|
<path d="M9.283 4.002V12H7.971V5.338h-.065L6.072 6.656V5.385l1.899-1.383z"/>
|
||||||
|
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 366 B |
3
dbapp/static/bootstrap-icons/123.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-123" viewBox="0 0 16 16">
|
||||||
|
<path d="M2.873 11.297V4.142H1.699L0 5.379v1.137l1.64-1.18h.06v5.961zm3.213-5.09v-.063c0-.618.44-1.169 1.196-1.169.676 0 1.174.44 1.174 1.106 0 .624-.42 1.101-.807 1.526L4.99 10.553v.744h4.78v-.99H6.643v-.069L8.41 8.252c.65-.724 1.237-1.332 1.237-2.27C9.646 4.849 8.723 4 7.308 4c-1.573 0-2.36 1.064-2.36 2.15v.057zm6.559 1.883h.786c.823 0 1.374.481 1.379 1.179.01.707-.55 1.216-1.421 1.21-.77-.005-1.326-.419-1.379-.953h-1.095c.042 1.053.938 1.918 2.464 1.918 1.478 0 2.642-.839 2.62-2.144-.02-1.143-.922-1.651-1.551-1.714v-.063c.535-.09 1.347-.66 1.326-1.678-.026-1.053-.933-1.855-2.359-1.845-1.5.005-2.317.88-2.348 1.898h1.116c.032-.498.498-.944 1.206-.944.703 0 1.206.435 1.206 1.07.005.64-.504 1.106-1.2 1.106h-.75z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 854 B |
3
dbapp/static/bootstrap-icons/2-circle-fill.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-2-circle-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M6.646 6.24c0-.691.493-1.306 1.336-1.306.756 0 1.313.492 1.313 1.236 0 .697-.469 1.23-.902 1.705l-2.971 3.293V12h5.344v-1.107H7.268v-.077l1.974-2.22.096-.107c.688-.763 1.287-1.428 1.287-2.43 0-1.266-1.031-2.215-2.613-2.215-1.758 0-2.637 1.19-2.637 2.402v.065h1.271v-.07Z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 457 B |
3
dbapp/static/bootstrap-icons/2-circle.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-2-circle" viewBox="0 0 16 16">
|
||||||
|
<path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M6.646 6.24v.07H5.375v-.064c0-1.213.879-2.402 2.637-2.402 1.582 0 2.613.949 2.613 2.215 0 1.002-.6 1.667-1.287 2.43l-.096.107-1.974 2.22v.077h3.498V12H5.422v-.832l2.97-3.293c.434-.475.903-1.008.903-1.705 0-.744-.557-1.236-1.313-1.236-.843 0-1.336.615-1.336 1.306"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 477 B |
3
dbapp/static/bootstrap-icons/2-square-fill.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-2-square-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm4.646 6.24v.07H5.375v-.064c0-1.213.879-2.402 2.637-2.402 1.582 0 2.613.949 2.613 2.215 0 1.002-.6 1.667-1.287 2.43l-.096.107-1.974 2.22v.077h3.498V12H5.422v-.832l2.97-3.293c.434-.475.903-1.008.903-1.705 0-.744-.557-1.236-1.313-1.236-.843 0-1.336.615-1.336 1.306"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 484 B |
4
dbapp/static/bootstrap-icons/2-square.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-2-square" viewBox="0 0 16 16">
|
||||||
|
<path d="M6.646 6.24v.07H5.375v-.064c0-1.213.879-2.402 2.637-2.402 1.582 0 2.613.949 2.613 2.215 0 1.002-.6 1.667-1.287 2.43l-.096.107-1.974 2.22v.077h3.498V12H5.422v-.832l2.97-3.293c.434-.475.903-1.008.903-1.705 0-.744-.557-1.236-1.313-1.236-.843 0-1.336.615-1.336 1.306"/>
|
||||||
|
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 564 B |
3
dbapp/static/bootstrap-icons/3-circle-fill.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-3-circle-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8.082.414c.92 0 1.535.54 1.541 1.318.012.791-.615 1.36-1.588 1.354-.861-.006-1.482-.469-1.54-1.066H5.104c.047 1.177 1.05 2.144 2.754 2.144 1.653 0 2.954-.937 2.93-2.396-.023-1.278-1.031-1.846-1.734-1.916v-.07c.597-.1 1.505-.739 1.482-1.876-.03-1.177-1.043-2.074-2.637-2.062-1.675.006-2.59.984-2.625 2.12h1.248c.036-.556.557-1.054 1.348-1.054.785 0 1.348.486 1.348 1.195.006.715-.563 1.237-1.342 1.237h-.838v1.072h.879Z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 607 B |
4
dbapp/static/bootstrap-icons/3-circle.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-3-circle" viewBox="0 0 16 16">
|
||||||
|
<path d="M7.918 8.414h-.879V7.342h.838c.78 0 1.348-.522 1.342-1.237 0-.709-.563-1.195-1.348-1.195-.79 0-1.312.498-1.348 1.055H5.275c.036-1.137.95-2.115 2.625-2.121 1.594-.012 2.608.885 2.637 2.062.023 1.137-.885 1.776-1.482 1.875v.07c.703.07 1.71.64 1.734 1.917.024 1.459-1.277 2.396-2.93 2.396-1.705 0-2.707-.967-2.754-2.144H6.33c.059.597.68 1.06 1.541 1.066.973.006 1.6-.563 1.588-1.354-.006-.779-.621-1.318-1.541-1.318"/>
|
||||||
|
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 642 B |
3
dbapp/static/bootstrap-icons/3-square-fill.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-3-square-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm5.918 8.414h-.879V7.342h.838c.78 0 1.348-.522 1.342-1.237 0-.709-.563-1.195-1.348-1.195-.79 0-1.312.498-1.348 1.055H5.275c.036-1.137.95-2.115 2.625-2.121 1.594-.012 2.608.885 2.637 2.062.023 1.137-.885 1.776-1.482 1.875v.07c.703.07 1.71.64 1.734 1.917.024 1.459-1.277 2.396-2.93 2.396-1.705 0-2.707-.967-2.754-2.144H6.33c.059.597.68 1.06 1.541 1.066.973.006 1.6-.563 1.588-1.354-.006-.779-.621-1.318-1.541-1.318"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 634 B |
4
dbapp/static/bootstrap-icons/3-square.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-3-square" viewBox="0 0 16 16">
|
||||||
|
<path d="M7.918 8.414h-.879V7.342h.838c.78 0 1.348-.522 1.342-1.237 0-.709-.563-1.195-1.348-1.195-.79 0-1.312.498-1.348 1.055H5.275c.036-1.137.95-2.115 2.625-2.121 1.594-.012 2.608.885 2.637 2.062.023 1.137-.885 1.776-1.482 1.875v.07c.703.07 1.71.64 1.734 1.917.024 1.459-1.277 2.396-2.93 2.396-1.705 0-2.707-.967-2.754-2.144H6.33c.059.597.68 1.06 1.541 1.066.973.006 1.6-.563 1.588-1.354-.006-.779-.621-1.318-1.541-1.318"/>
|
||||||
|
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 714 B |
3
dbapp/static/bootstrap-icons/4-circle-fill.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-4-circle-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M7.519 5.057c-.886 1.418-1.772 2.838-2.542 4.265v1.12H8.85V12h1.26v-1.559h1.007V9.334H10.11V4.002H8.176zM6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 359 B |
4
dbapp/static/bootstrap-icons/4-circle.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-4-circle" viewBox="0 0 16 16">
|
||||||
|
<path d="M7.519 5.057q.33-.527.657-1.055h1.933v5.332h1.008v1.107H10.11V12H8.85v-1.559H4.978V9.322c.77-1.427 1.656-2.847 2.542-4.265ZM6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218"/>
|
||||||
|
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 421 B |
4
dbapp/static/bootstrap-icons/4-square-fill.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-4-square-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218"/>
|
||||||
|
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm5.519 5.057q.33-.527.657-1.055h1.933v5.332h1.008v1.107H10.11V12H8.85v-1.559H4.978V9.322c.77-1.427 1.656-2.847 2.542-4.265Z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 428 B |
4
dbapp/static/bootstrap-icons/4-square.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-4-square" viewBox="0 0 16 16">
|
||||||
|
<path d="M7.519 5.057q.33-.527.657-1.055h1.933v5.332h1.008v1.107H10.11V12H8.85v-1.559H4.978V9.322c.77-1.427 1.656-2.847 2.542-4.265ZM6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218"/>
|
||||||
|
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 493 B |
3
dbapp/static/bootstrap-icons/5-circle-fill.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-5-circle-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8.006 4.158c1.74 0 2.924-1.119 2.924-2.806 0-1.641-1.178-2.584-2.56-2.584-.897 0-1.442.421-1.612.68h-.064l.193-2.344h3.621V4.002H5.791L5.445 8.63h1.149c.193-.358.668-.809 1.435-.809.85 0 1.582.604 1.582 1.57 0 1.085-.779 1.682-1.57 1.682-.697 0-1.389-.31-1.53-1.031H5.276c.065 1.213 1.149 2.115 2.72 2.115Z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 495 B |
3
dbapp/static/bootstrap-icons/5-circle.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-5-circle" viewBox="0 0 16 16">
|
||||||
|
<path d="M1 8a7 7 0 1 1 14 0A7 7 0 0 1 1 8m15 0A8 8 0 1 0 0 8a8 8 0 0 0 16 0m-8.006 4.158c-1.57 0-2.654-.902-2.719-2.115h1.237c.14.72.832 1.031 1.529 1.031.791 0 1.57-.597 1.57-1.681 0-.967-.732-1.57-1.582-1.57-.767 0-1.242.45-1.435.808H5.445L5.791 4h4.705v1.103H6.875l-.193 2.343h.064c.17-.258.715-.68 1.611-.68 1.383 0 2.561.944 2.561 2.585 0 1.687-1.184 2.806-2.924 2.806Z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 514 B |
3
dbapp/static/bootstrap-icons/5-square-fill.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-5-square-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm5.994 12.158c-1.57 0-2.654-.902-2.719-2.115h1.237c.14.72.832 1.031 1.529 1.031.791 0 1.57-.597 1.57-1.681 0-.967-.732-1.57-1.582-1.57-.767 0-1.242.45-1.435.808H5.445L5.791 4h4.705v1.103H6.875l-.193 2.343h.064c.17-.258.715-.68 1.611-.68 1.383 0 2.561.944 2.561 2.585 0 1.687-1.184 2.806-2.924 2.806Z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 521 B |
4
dbapp/static/bootstrap-icons/5-square.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-5-square" viewBox="0 0 16 16">
|
||||||
|
<path d="M7.994 12.158c-1.57 0-2.654-.902-2.719-2.115h1.237c.14.72.832 1.031 1.529 1.031.791 0 1.57-.597 1.57-1.681 0-.967-.732-1.57-1.582-1.57-.767 0-1.242.45-1.435.808H5.445L5.791 4h4.705v1.103H6.875l-.193 2.343h.064c.17-.258.715-.68 1.611-.68 1.383 0 2.561.944 2.561 2.585 0 1.687-1.184 2.806-2.924 2.806Z"/>
|
||||||
|
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 601 B |
3
dbapp/static/bootstrap-icons/6-circle-fill.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-6-circle-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.21 3.855c-1.868 0-3.116 1.395-3.116 4.407 0 1.183.228 2.039.597 2.642.569.926 1.477 1.254 2.409 1.254 1.629 0 2.847-1.013 2.847-2.783 0-1.676-1.254-2.555-2.508-2.555-1.125 0-1.752.61-1.98 1.155h-.082c-.012-1.946.727-3.036 1.805-3.036.802 0 1.213.457 1.312.815h1.29c-.06-.908-.962-1.899-2.573-1.899Zm-.099 4.008c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 617 B |
3
dbapp/static/bootstrap-icons/6-circle.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-6-circle" viewBox="0 0 16 16">
|
||||||
|
<path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.21 3.855c1.612 0 2.515.99 2.573 1.899H9.494c-.1-.358-.51-.815-1.312-.815-1.078 0-1.817 1.09-1.805 3.036h.082c.229-.545.855-1.155 1.98-1.155 1.254 0 2.508.88 2.508 2.555 0 1.77-1.218 2.783-2.847 2.783-.932 0-1.84-.328-2.409-1.254-.369-.603-.597-1.459-.597-2.642 0-3.012 1.248-4.407 3.117-4.407Zm-.099 4.008c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 640 B |
4
dbapp/static/bootstrap-icons/6-square-fill.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-6-square-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M8.111 7.863c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582"/>
|
||||||
|
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm6.21 3.855c1.612 0 2.515.99 2.573 1.899H9.494c-.1-.358-.51-.815-1.312-.815-1.078 0-1.817 1.09-1.805 3.036h.082c.229-.545.855-1.155 1.98-1.155 1.254 0 2.508.88 2.508 2.555 0 1.77-1.218 2.783-2.847 2.783-.932 0-1.84-.328-2.409-1.254-.369-.603-.597-1.459-.597-2.642 0-3.012 1.248-4.407 3.117-4.407Z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 662 B |
4
dbapp/static/bootstrap-icons/6-square.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-6-square" viewBox="0 0 16 16">
|
||||||
|
<path d="M8.21 3.855c1.612 0 2.515.99 2.573 1.899H9.494c-.1-.358-.51-.815-1.312-.815-1.078 0-1.817 1.09-1.805 3.036h.082c.229-.545.855-1.155 1.98-1.155 1.254 0 2.508.88 2.508 2.555 0 1.77-1.218 2.783-2.847 2.783-.932 0-1.84-.328-2.409-1.254-.369-.603-.597-1.459-.597-2.642 0-3.012 1.248-4.407 3.117-4.407Zm-.099 4.008c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582"/>
|
||||||
|
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 727 B |
3
dbapp/static/bootstrap-icons/7-circle-fill.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-7-circle-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.37 5.11h3.972v.07L6.025 12H7.42l3.258-6.85V4.002H5.369v1.107Z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 251 B |
3
dbapp/static/bootstrap-icons/7-circle.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-7-circle" viewBox="0 0 16 16">
|
||||||
|
<path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.37 5.11V4.001h5.308V5.15L7.42 12H6.025l3.317-6.82v-.07H5.369Z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 279 B |
3
dbapp/static/bootstrap-icons/7-square-fill.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-7-square-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm3.37 5.11V4.001h5.308V5.15L7.42 12H6.025l3.317-6.82v-.07H5.369Z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 286 B |
4
dbapp/static/bootstrap-icons/7-square.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-7-square" viewBox="0 0 16 16">
|
||||||
|
<path d="M5.37 5.11V4.001h5.308V5.15L7.42 12H6.025l3.317-6.82v-.07H5.369Z"/>
|
||||||
|
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 366 B |
3
dbapp/static/bootstrap-icons/8-circle-fill.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-8-circle-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-5.03 1.803c0-1.248-.943-1.84-1.646-1.992v-.065c.598-.187 1.336-.72 1.336-1.781 0-1.225-1.084-2.121-2.654-2.121s-2.66.896-2.66 2.12c0 1.044.709 1.589 1.33 1.782v.065c-.697.152-1.647.732-1.647 2.003 0 1.39 1.19 2.344 2.953 2.344 1.77 0 2.989-.96 2.989-2.355Zm-4.347-3.71c0 .739.586 1.255 1.383 1.255s1.377-.516 1.377-1.254c0-.733-.58-1.23-1.377-1.23s-1.383.497-1.383 1.23Zm-.281 3.645c0 .838.72 1.412 1.664 1.412.943 0 1.658-.574 1.658-1.412 0-.843-.715-1.424-1.658-1.424-.944 0-1.664.58-1.664 1.424"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 686 B |
3
dbapp/static/bootstrap-icons/8-circle.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-8-circle" viewBox="0 0 16 16">
|
||||||
|
<path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-5.03 1.803c0 1.394-1.218 2.355-2.988 2.355-1.763 0-2.953-.955-2.953-2.344 0-1.271.95-1.851 1.647-2.003v-.065c-.621-.193-1.33-.738-1.33-1.781 0-1.225 1.09-2.121 2.66-2.121s2.654.896 2.654 2.12c0 1.061-.738 1.595-1.336 1.782v.065c.703.152 1.647.744 1.647 1.992Zm-4.347-3.71c0 .739.586 1.255 1.383 1.255s1.377-.516 1.377-1.254c0-.733-.58-1.23-1.377-1.23s-1.383.497-1.383 1.23Zm-.281 3.645c0 .838.72 1.412 1.664 1.412.943 0 1.658-.574 1.658-1.412 0-.843-.715-1.424-1.658-1.424-.944 0-1.664.58-1.664 1.424"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 717 B |
4
dbapp/static/bootstrap-icons/8-square-fill.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-8-square-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M6.623 6.094c0 .738.586 1.254 1.383 1.254s1.377-.516 1.377-1.254c0-.733-.58-1.23-1.377-1.23s-1.383.497-1.383 1.23m-.281 3.644c0 .838.72 1.412 1.664 1.412.943 0 1.658-.574 1.658-1.412 0-.843-.715-1.424-1.658-1.424-.944 0-1.664.58-1.664 1.424"/>
|
||||||
|
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm8.97 9.803c0 1.394-1.218 2.355-2.988 2.355-1.763 0-2.953-.955-2.953-2.344 0-1.271.95-1.851 1.647-2.003v-.065c-.621-.193-1.33-.738-1.33-1.781 0-1.225 1.09-2.121 2.66-2.121s2.654.896 2.654 2.12c0 1.061-.738 1.595-1.336 1.782v.065c.703.152 1.647.744 1.647 1.992Z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 737 B |
4
dbapp/static/bootstrap-icons/8-square.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-8-square" viewBox="0 0 16 16">
|
||||||
|
<path d="M10.97 9.803c0 1.394-1.218 2.355-2.988 2.355-1.763 0-2.953-.955-2.953-2.344 0-1.271.95-1.851 1.647-2.003v-.065c-.621-.193-1.33-.738-1.33-1.781 0-1.225 1.09-2.121 2.66-2.121s2.654.896 2.654 2.12c0 1.061-.738 1.595-1.336 1.782v.065c.703.152 1.647.744 1.647 1.992Zm-4.347-3.71c0 .739.586 1.255 1.383 1.255s1.377-.516 1.377-1.254c0-.733-.58-1.23-1.377-1.23s-1.383.497-1.383 1.23Zm-.281 3.645c0 .838.72 1.412 1.664 1.412.943 0 1.658-.574 1.658-1.412 0-.843-.715-1.424-1.658-1.424-.944 0-1.664.58-1.664 1.424"/>
|
||||||
|
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 804 B |
3
dbapp/static/bootstrap-icons/9-circle-fill.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-9-circle-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8.223 4.146c2.104 0 3.123-1.464 3.123-4.3 0-3.147-1.459-4.014-2.97-4.014-1.63 0-2.871 1.02-2.871 2.73 0 1.706 1.171 2.667 2.566 2.667 1.06 0 1.7-.557 1.934-1.184h.076c.047 1.67-.475 3.023-1.834 3.023-.71 0-1.149-.363-1.248-.72H5.258c.094.908.926 1.798 2.52 1.798Zm.118-3.972c.808 0 1.535-.528 1.535-1.594s-.668-1.676-1.56-1.676c-.838 0-1.517.616-1.517 1.659 0 1.072.708 1.61 1.54 1.61Z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 574 B |
3
dbapp/static/bootstrap-icons/9-circle.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-9-circle" viewBox="0 0 16 16">
|
||||||
|
<path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8.223 4.146c-1.593 0-2.425-.89-2.52-1.798h1.296c.1.357.539.72 1.248.72 1.36 0 1.88-1.353 1.834-3.023h-.076c-.235.627-.873 1.184-1.934 1.184-1.395 0-2.566-.961-2.566-2.666 0-1.711 1.242-2.731 2.87-2.731 1.512 0 2.971.867 2.971 4.014 0 2.836-1.02 4.3-3.123 4.3m.118-3.972c.808 0 1.535-.528 1.535-1.594s-.668-1.676-1.56-1.676c-.838 0-1.517.616-1.517 1.659 0 1.072.708 1.61 1.54 1.61Z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 597 B |
4
dbapp/static/bootstrap-icons/9-square-fill.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-9-square-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M7.895 8.174c.808 0 1.535-.528 1.535-1.594s-.668-1.676-1.56-1.676c-.838 0-1.517.616-1.517 1.659 0 1.072.708 1.61 1.54 1.61Z"/>
|
||||||
|
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm5.777 12.146c-1.593 0-2.425-.89-2.52-1.798h1.296c.1.357.539.72 1.248.72 1.36 0 1.88-1.353 1.834-3.023h-.076c-.235.627-.873 1.184-1.934 1.184-1.395 0-2.566-.961-2.566-2.666 0-1.711 1.242-2.731 2.87-2.731 1.512 0 2.971.867 2.971 4.014 0 2.836-1.02 4.3-3.123 4.3"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 620 B |
4
dbapp/static/bootstrap-icons/9-square.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-9-square" viewBox="0 0 16 16">
|
||||||
|
<path d="M7.777 12.146c-1.593 0-2.425-.89-2.52-1.798h1.296c.1.357.539.72 1.248.72 1.36 0 1.88-1.353 1.834-3.023h-.076c-.235.627-.873 1.184-1.934 1.184-1.395 0-2.566-.961-2.566-2.666 0-1.711 1.242-2.731 2.87-2.731 1.512 0 2.971.867 2.971 4.014 0 2.836-1.02 4.3-3.123 4.3m.118-3.972c.808 0 1.535-.528 1.535-1.594s-.668-1.676-1.56-1.676c-.838 0-1.517.616-1.517 1.659 0 1.072.708 1.61 1.54 1.61Z"/>
|
||||||
|
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 684 B |
3
dbapp/static/bootstrap-icons/activity.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-activity" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M6 2a.5.5 0 0 1 .47.33L10 12.036l1.53-4.208A.5.5 0 0 1 12 7.5h3.5a.5.5 0 0 1 0 1h-3.15l-1.88 5.17a.5.5 0 0 1-.94 0L6 3.964 4.47 8.171A.5.5 0 0 1 4 8.5H.5a.5.5 0 0 1 0-1h3.15l1.88-5.17A.5.5 0 0 1 6 2"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 366 B |
3
dbapp/static/bootstrap-icons/airplane-engines-fill.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-airplane-engines-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M8 0c-.787 0-1.292.592-1.572 1.151A4.35 4.35 0 0 0 6 3v3.691l-2 1V7.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.191l-1.17.585A1.5 1.5 0 0 0 0 10.618V12a.5.5 0 0 0 .582.493l1.631-.272.313.937a.5.5 0 0 0 .948 0l.405-1.214 2.21-.369.375 2.253-1.318 1.318A.5.5 0 0 0 5.5 16h5a.5.5 0 0 0 .354-.854l-1.318-1.318.375-2.253 2.21.369.405 1.214a.5.5 0 0 0 .948 0l.313-.937 1.63.272A.5.5 0 0 0 16 12v-1.382a1.5 1.5 0 0 0-.83-1.342L14 8.691V7.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v.191l-2-1V3c0-.568-.14-1.271-.428-1.849C9.292.591 8.787 0 8 0"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 687 B |
3
dbapp/static/bootstrap-icons/airplane-engines.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-airplane-engines" viewBox="0 0 16 16">
|
||||||
|
<path d="M8 0c-.787 0-1.292.592-1.572 1.151A4.35 4.35 0 0 0 6 3v3.691l-2 1V7.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.191l-1.17.585A1.5 1.5 0 0 0 0 10.618V12a.5.5 0 0 0 .582.493l1.631-.272.313.937a.5.5 0 0 0 .948 0l.405-1.214 2.21-.369.375 2.253-1.318 1.318A.5.5 0 0 0 5.5 16h5a.5.5 0 0 0 .354-.854l-1.318-1.318.375-2.253 2.21.369.405 1.214a.5.5 0 0 0 .948 0l.313-.937 1.63.272A.5.5 0 0 0 16 12v-1.382a1.5 1.5 0 0 0-.83-1.342L14 8.691V7.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v.191l-2-1V3c0-.568-.14-1.271-.428-1.849C9.292.591 8.787 0 8 0M7 3c0-.432.11-.979.322-1.401C7.542 1.159 7.787 1 8 1s.458.158.678.599C8.889 2.02 9 2.569 9 3v4a.5.5 0 0 0 .276.447l5.448 2.724a.5.5 0 0 1 .276.447v.792l-5.418-.903a.5.5 0 0 0-.575.41l-.5 3a.5.5 0 0 0 .14.437l.646.646H6.707l.647-.646a.5.5 0 0 0 .14-.436l-.5-3a.5.5 0 0 0-.576-.411L1 11.41v-.792a.5.5 0 0 1 .276-.447l5.448-2.724A.5.5 0 0 0 7 7z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.0 KiB |
3
dbapp/static/bootstrap-icons/airplane-fill.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-airplane-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M6.428 1.151C6.708.591 7.213 0 8 0s1.292.592 1.572 1.151C9.861 1.73 10 2.431 10 3v3.691l5.17 2.585a1.5 1.5 0 0 1 .83 1.342V12a.5.5 0 0 1-.582.493l-5.507-.918-.375 2.253 1.318 1.318A.5.5 0 0 1 10.5 16h-5a.5.5 0 0 1-.354-.854l1.319-1.318-.376-2.253-5.507.918A.5.5 0 0 1 0 12v-1.382a1.5 1.5 0 0 1 .83-1.342L6 6.691V3c0-.568.14-1.271.428-1.849"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 492 B |
3
dbapp/static/bootstrap-icons/airplane.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-airplane" viewBox="0 0 16 16">
|
||||||
|
<path d="M6.428 1.151C6.708.591 7.213 0 8 0s1.292.592 1.572 1.151C9.861 1.73 10 2.431 10 3v3.691l5.17 2.585a1.5 1.5 0 0 1 .83 1.342V12a.5.5 0 0 1-.582.493l-5.507-.918-.375 2.253 1.318 1.318A.5.5 0 0 1 10.5 16h-5a.5.5 0 0 1-.354-.854l1.319-1.318-.376-2.253-5.507.918A.5.5 0 0 1 0 12v-1.382a1.5 1.5 0 0 1 .83-1.342L6 6.691V3c0-.568.14-1.271.428-1.849m.894.448C7.111 2.02 7 2.569 7 3v4a.5.5 0 0 1-.276.447l-5.448 2.724a.5.5 0 0 0-.276.447v.792l5.418-.903a.5.5 0 0 1 .575.41l.5 3a.5.5 0 0 1-.14.437L6.708 15h2.586l-.647-.646a.5.5 0 0 1-.14-.436l.5-3a.5.5 0 0 1 .576-.411L15 11.41v-.792a.5.5 0 0 0-.276-.447L9.276 7.447A.5.5 0 0 1 9 7V3c0-.432-.11-.979-.322-1.401C8.458 1.159 8.213 1 8 1s-.458.158-.678.599"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 840 B |
3
dbapp/static/bootstrap-icons/alarm-fill.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-alarm-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M6 .5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1H9v1.07a7.001 7.001 0 0 1 3.274 12.474l.601.602a.5.5 0 0 1-.707.708l-.746-.746A6.97 6.97 0 0 1 8 16a6.97 6.97 0 0 1-3.422-.892l-.746.746a.5.5 0 0 1-.707-.708l.602-.602A7.001 7.001 0 0 1 7 2.07V1h-.5A.5.5 0 0 1 6 .5m2.5 5a.5.5 0 0 0-1 0v3.362l-1.429 2.38a.5.5 0 1 0 .858.515l1.5-2.5A.5.5 0 0 0 8.5 9zM.86 5.387A2.5 2.5 0 1 1 4.387 1.86 8.04 8.04 0 0 0 .86 5.387M11.613 1.86a2.5 2.5 0 1 1 3.527 3.527 8.04 8.04 0 0 0-3.527-3.527"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 615 B |
4
dbapp/static/bootstrap-icons/alarm.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-alarm" viewBox="0 0 16 16">
|
||||||
|
<path d="M8.5 5.5a.5.5 0 0 0-1 0v3.362l-1.429 2.38a.5.5 0 1 0 .858.515l1.5-2.5A.5.5 0 0 0 8.5 9z"/>
|
||||||
|
<path d="M6.5 0a.5.5 0 0 0 0 1H7v1.07a7.001 7.001 0 0 0-3.273 12.474l-.602.602a.5.5 0 0 0 .707.708l.746-.746A6.97 6.97 0 0 0 8 16a6.97 6.97 0 0 0 3.422-.892l.746.746a.5.5 0 0 0 .707-.708l-.601-.602A7.001 7.001 0 0 0 9 2.07V1h.5a.5.5 0 0 0 0-1zm1.038 3.018a6 6 0 0 1 .924 0 6 6 0 1 1-.924 0M0 3.5c0 .753.333 1.429.86 1.887A8.04 8.04 0 0 1 4.387 1.86 2.5 2.5 0 0 0 0 3.5M13.5 1c-.753 0-1.429.333-1.887.86a8.04 8.04 0 0 1 3.527 3.527A2.5 2.5 0 0 0 13.5 1"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 689 B |
3
dbapp/static/bootstrap-icons/alexa.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-alexa" viewBox="0 0 16 16">
|
||||||
|
<path d="M7.996 0A8 8 0 0 0 0 8a8 8 0 0 0 6.93 7.93v-1.613a1.06 1.06 0 0 0-.717-1.008A5.6 5.6 0 0 1 2.4 7.865 5.58 5.58 0 0 1 8.054 2.4a5.6 5.6 0 0 1 5.535 5.81l-.002.046-.012.192-.005.061a5 5 0 0 1-.033.284l-.01.068c-.685 4.516-6.564 7.054-6.596 7.068A7.998 7.998 0 0 0 15.992 8 8 8 0 0 0 7.996.001Z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 436 B |
4
dbapp/static/bootstrap-icons/align-bottom.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-align-bottom" viewBox="0 0 16 16">
|
||||||
|
<rect width="4" height="12" x="6" y="1" rx="1"/>
|
||||||
|
<path d="M1.5 14a.5.5 0 0 0 0 1zm13 1a.5.5 0 0 0 0-1zm-13 0h13v-1h-13z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 264 B |
3
dbapp/static/bootstrap-icons/align-center.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-align-center" viewBox="0 0 16 16">
|
||||||
|
<path d="M8 1a.5.5 0 0 1 .5.5V6h-1V1.5A.5.5 0 0 1 8 1m0 14a.5.5 0 0 1-.5-.5V10h1v4.5a.5.5 0 0 1-.5.5M2 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 311 B |
4
dbapp/static/bootstrap-icons/align-end.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-align-end" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M14.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 1 0v-13a.5.5 0 0 0-.5-.5"/>
|
||||||
|
<path d="M13 7a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 315 B |
3
dbapp/static/bootstrap-icons/align-middle.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-align-middle" viewBox="0 0 16 16">
|
||||||
|
<path d="M6 13a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1zM1 8a.5.5 0 0 0 .5.5H6v-1H1.5A.5.5 0 0 0 1 8m14 0a.5.5 0 0 1-.5.5H10v-1h4.5a.5.5 0 0 1 .5.5"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 311 B |
4
dbapp/static/bootstrap-icons/align-start.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-align-start" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M1.5 1a.5.5 0 0 1 .5.5v13a.5.5 0 0 1-1 0v-13a.5.5 0 0 1 .5-.5"/>
|
||||||
|
<path d="M3 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 315 B |
4
dbapp/static/bootstrap-icons/align-top.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-align-top" viewBox="0 0 16 16">
|
||||||
|
<rect width="4" height="12" rx="1" transform="matrix(1 0 0 -1 6 15)"/>
|
||||||
|
<path d="M1.5 2a.5.5 0 0 1 0-1zm13-1a.5.5 0 0 1 0 1zm-13 0h13v1h-13z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 281 B |
4
dbapp/static/bootstrap-icons/alipay.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-alipay" viewBox="0 0 16 16">
|
||||||
|
<path d="M2.541 0H13.5a2.55 2.55 0 0 1 2.54 2.563v8.297c-.006 0-.531-.046-2.978-.813-.412-.14-.916-.327-1.479-.536q-.456-.17-.957-.353a13 13 0 0 0 1.325-3.373H8.822V4.649h3.831v-.634h-3.83V2.121H7.26c-.274 0-.274.273-.274.273v1.621H3.11v.634h3.875v1.136h-3.2v.634H9.99c-.227.789-.532 1.53-.894 2.202-2.013-.67-4.161-1.212-5.51-.878-.864.214-1.42.597-1.746.998-1.499 1.84-.424 4.633 2.741 4.633 1.872 0 3.675-1.053 5.072-2.787 2.08 1.008 6.37 2.738 6.387 2.745v.105A2.55 2.55 0 0 1 13.5 16H2.541A2.55 2.55 0 0 1 0 13.437V2.563A2.55 2.55 0 0 1 2.541 0"/>
|
||||||
|
<path d="M2.309 9.27c-1.22 1.073-.49 3.034 1.978 3.034 1.434 0 2.868-.925 3.994-2.406-1.602-.789-2.959-1.353-4.425-1.207-.397.04-1.14.217-1.547.58Z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 839 B |
3
dbapp/static/bootstrap-icons/alphabet-uppercase.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-alphabet-uppercase" viewBox="0 0 16 16">
|
||||||
|
<path d="M1.226 10.88H0l2.056-6.26h1.42l2.047 6.26h-1.29l-.48-1.61H1.707l-.48 1.61ZM2.76 5.818h-.054l-.75 2.532H3.51zm3.217 5.062V4.62h2.56c1.09 0 1.808.582 1.808 1.54 0 .762-.444 1.22-1.05 1.372v.055c.736.074 1.365.587 1.365 1.528 0 1.119-.89 1.766-2.133 1.766zM7.18 5.55v1.675h.8c.812 0 1.171-.308 1.171-.853 0-.51-.328-.822-.898-.822zm0 2.537V9.95h.903c.951 0 1.342-.312 1.342-.909 0-.591-.382-.954-1.095-.954zm5.089-.711v.775c0 1.156.49 1.803 1.347 1.803.705 0 1.163-.454 1.212-1.096H16v.12C15.942 10.173 14.95 11 13.607 11c-1.648 0-2.573-1.073-2.573-2.849v-.78c0-1.775.934-2.871 2.573-2.871 1.347 0 2.34.849 2.393 2.087v.115h-1.172c-.05-.665-.516-1.156-1.212-1.156-.849 0-1.347.67-1.347 1.83"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 845 B |
3
dbapp/static/bootstrap-icons/alphabet.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-alphabet" viewBox="0 0 16 16">
|
||||||
|
<path d="M2.204 11.078c.767 0 1.201-.356 1.406-.737h.059V11h1.216V7.519c0-1.314-.947-1.783-2.11-1.783C1.355 5.736.75 6.42.69 7.27h1.216c.064-.323.313-.552.84-.552s.864.249.864.771v.464H2.346C1.145 7.953.5 8.568.5 9.496c0 .977.693 1.582 1.704 1.582m.42-.947c-.44 0-.845-.235-.845-.718 0-.395.269-.684.84-.684h.991v.538c0 .503-.444.864-.986.864m5.593.937c1.216 0 1.948-.869 1.948-2.31v-.702c0-1.44-.727-2.305-1.929-2.305-.742 0-1.328.347-1.499.889h-.063V3.983h-1.29V11h1.27v-.791h.064c.21.532.776.86 1.499.86Zm-.43-1.025c-.66 0-1.113-.518-1.113-1.28V8.12c0-.825.42-1.343 1.098-1.343.684 0 1.075.518 1.075 1.416v.45c0 .888-.386 1.401-1.06 1.401Zm2.834-1.328c0 1.47.87 2.378 2.305 2.378 1.416 0 2.139-.777 2.158-1.763h-1.186c-.06.425-.313.732-.933.732-.66 0-1.05-.512-1.05-1.352v-.625c0-.81.371-1.328 1.045-1.328.635 0 .879.425.918.776h1.187c-.02-.986-.787-1.806-2.14-1.806-1.41 0-2.304.918-2.304 2.338z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.0 KiB |
3
dbapp/static/bootstrap-icons/alt.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-alt" viewBox="0 0 16 16">
|
||||||
|
<path d="M1 13.5a.5.5 0 0 0 .5.5h3.797a.5.5 0 0 0 .439-.26L11 3h3.5a.5.5 0 0 0 0-1h-3.797a.5.5 0 0 0-.439.26L5 13H1.5a.5.5 0 0 0-.5.5m10 0a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 0-1h-3a.5.5 0 0 0-.5.5"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 324 B |
4
dbapp/static/bootstrap-icons/amazon.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-amazon" viewBox="0 0 16 16">
|
||||||
|
<path d="M10.813 11.968c.157.083.36.074.5-.05l.005.005a90 90 0 0 1 1.623-1.405c.173-.143.143-.372.006-.563l-.125-.17c-.345-.465-.673-.906-.673-1.791v-3.3l.001-.335c.008-1.265.014-2.421-.933-3.305C10.404.274 9.06 0 8.03 0 6.017 0 3.77.75 3.296 3.24c-.047.264.143.404.316.443l2.054.22c.19-.009.33-.196.366-.387.176-.857.896-1.271 1.703-1.271.435 0 .929.16 1.188.55.264.39.26.91.257 1.376v.432q-.3.033-.621.065c-1.113.114-2.397.246-3.36.67C3.873 5.91 2.94 7.08 2.94 8.798c0 2.2 1.387 3.298 3.168 3.298 1.506 0 2.328-.354 3.489-1.54l.167.246c.274.405.456.675 1.047 1.166ZM6.03 8.431C6.03 6.627 7.647 6.3 9.177 6.3v.57c.001.776.002 1.434-.396 2.133-.336.595-.87.961-1.465.961-.812 0-1.286-.619-1.286-1.533M.435 12.174c2.629 1.603 6.698 4.084 13.183.997.28-.116.475.078.199.431C13.538 13.96 11.312 16 7.57 16 3.832 16 .968 13.446.094 12.386c-.24-.275.036-.4.199-.299z"/>
|
||||||
|
<path d="M13.828 11.943c.567-.07 1.468-.027 1.645.204.135.176-.004.966-.233 1.533-.23.563-.572.961-.762 1.115s-.333.094-.23-.137c.105-.23.684-1.663.455-1.963-.213-.278-1.177-.177-1.625-.13l-.09.009q-.142.013-.233.024c-.193.021-.245.027-.274-.032-.074-.209.779-.556 1.347-.623"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
3
dbapp/static/bootstrap-icons/amd.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-amd" viewBox="0 0 16 16">
|
||||||
|
<path d="m.334 0 4.358 4.359h7.15v7.15l4.358 4.358V0zM.2 9.72l4.487-4.488v6.281h6.28L6.48 16H.2z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 230 B |
3
dbapp/static/bootstrap-icons/android.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-android" viewBox="0 0 16 16">
|
||||||
|
<path d="M2.76 3.061a.5.5 0 0 1 .679.2l1.283 2.352A8.9 8.9 0 0 1 8 5a8.9 8.9 0 0 1 3.278.613l1.283-2.352a.5.5 0 1 1 .878.478l-1.252 2.295C14.475 7.266 16 9.477 16 12H0c0-2.523 1.525-4.734 3.813-5.966L2.56 3.74a.5.5 0 0 1 .2-.678ZM5 10a1 1 0 1 0 0-2 1 1 0 0 0 0 2m6 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 432 B |
3
dbapp/static/bootstrap-icons/android2.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-android2" viewBox="0 0 16 16">
|
||||||
|
<path d="m10.213 1.471.691-1.26q.069-.124-.048-.192-.128-.057-.195.058l-.7 1.27A4.8 4.8 0 0 0 8.005.941q-1.032 0-1.956.404l-.7-1.27Q5.281-.037 5.154.02q-.117.069-.049.193l.691 1.259a4.25 4.25 0 0 0-1.673 1.476A3.7 3.7 0 0 0 3.5 5.02h9q0-1.125-.623-2.072a4.27 4.27 0 0 0-1.664-1.476ZM6.22 3.303a.37.37 0 0 1-.267.11.35.35 0 0 1-.263-.11.37.37 0 0 1-.107-.264.37.37 0 0 1 .107-.265.35.35 0 0 1 .263-.11q.155 0 .267.11a.36.36 0 0 1 .112.265.36.36 0 0 1-.112.264m4.101 0a.35.35 0 0 1-.262.11.37.37 0 0 1-.268-.11.36.36 0 0 1-.112-.264q0-.154.112-.265a.37.37 0 0 1 .268-.11q.155 0 .262.11a.37.37 0 0 1 .107.265q0 .153-.107.264M3.5 11.77q0 .441.311.75.311.306.76.307h.758l.01 2.182q0 .414.292.703a.96.96 0 0 0 .7.288.97.97 0 0 0 .71-.288.95.95 0 0 0 .292-.703v-2.182h1.343v2.182q0 .414.292.703a.97.97 0 0 0 .71.288.97.97 0 0 0 .71-.288.95.95 0 0 0 .292-.703v-2.182h.76q.436 0 .749-.308.31-.307.311-.75V5.365h-9zm10.495-6.587a.98.98 0 0 0-.702.278.9.9 0 0 0-.293.685v4.063q0 .406.293.69a.97.97 0 0 0 .702.284q.42 0 .712-.284a.92.92 0 0 0 .293-.69V6.146a.9.9 0 0 0-.293-.685 1 1 0 0 0-.712-.278m-12.702.283a1 1 0 0 1 .712-.283q.41 0 .702.283a.9.9 0 0 1 .293.68v4.063a.93.93 0 0 1-.288.69.97.97 0 0 1-.707.284 1 1 0 0 1-.712-.284.92.92 0 0 1-.293-.69V6.146q0-.396.293-.68"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.4 KiB |
3
dbapp/static/bootstrap-icons/anthropic.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-anthropic" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M9.218 2h2.402L16 12.987h-2.402zM4.379 2h2.512l4.38 10.987H8.82l-.895-2.308h-4.58l-.896 2.307H0L4.38 2.001zm2.755 6.64L5.635 4.777 4.137 8.64z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 311 B |
4
dbapp/static/bootstrap-icons/app-indicator.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-app-indicator" viewBox="0 0 16 16">
|
||||||
|
<path d="M5.5 2A3.5 3.5 0 0 0 2 5.5v5A3.5 3.5 0 0 0 5.5 14h5a3.5 3.5 0 0 0 3.5-3.5V8a.5.5 0 0 1 1 0v2.5a4.5 4.5 0 0 1-4.5 4.5h-5A4.5 4.5 0 0 1 1 10.5v-5A4.5 4.5 0 0 1 5.5 1H8a.5.5 0 0 1 0 1z"/>
|
||||||
|
<path d="M16 3a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 382 B |
3
dbapp/static/bootstrap-icons/app.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-app" viewBox="0 0 16 16">
|
||||||
|
<path d="M11 2a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H5a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3zM5 1a4 4 0 0 0-4 4v6a4 4 0 0 0 4 4h6a4 4 0 0 0 4-4V5a4 4 0 0 0-4-4z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 278 B |
3
dbapp/static/bootstrap-icons/apple-music.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-apple-music" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="m10.995 0 .573.001q.241 0 .483.007c.35.01.705.03 1.051.093.352.063.68.166.999.329a3.36 3.36 0 0 1 1.47 1.468c.162.32.265.648.328 1 .063.347.084.7.093 1.051q.007.241.007.483l.001.573v5.99l-.001.573q0 .241-.008.483c-.01.35-.03.704-.092 1.05a3.5 3.5 0 0 1-.33 1 3.36 3.36 0 0 1-1.468 1.468 3.5 3.5 0 0 1-1 .33 7 7 0 0 1-1.05.092q-.241.007-.483.008l-.573.001h-5.99l-.573-.001q-.241 0-.483-.008a7 7 0 0 1-1.052-.092 3.6 3.6 0 0 1-.998-.33 3.36 3.36 0 0 1-1.47-1.468 3.6 3.6 0 0 1-.328-1 7 7 0 0 1-.093-1.05Q.002 11.81 0 11.568V5.005l.001-.573q0-.241.007-.483c.01-.35.03-.704.093-1.05a3.6 3.6 0 0 1 .329-1A3.36 3.36 0 0 1 1.9.431 3.5 3.5 0 0 1 2.896.1 7 7 0 0 1 3.95.008Q4.19.002 4.432 0h.573zm-.107 2.518-4.756.959H6.13a.66.66 0 0 0-.296.133.5.5 0 0 0-.16.31c-.004.027-.01.08-.01.16v5.952c0 .14-.012.275-.106.39-.095.115-.21.15-.347.177l-.31.063c-.393.08-.65.133-.881.223a1.4 1.4 0 0 0-.519.333 1.25 1.25 0 0 0-.332.995c.031.297.166.582.395.792.156.142.35.25.578.296.236.047.49.031.858-.043.196-.04.38-.102.555-.205a1.4 1.4 0 0 0 .438-.405 1.5 1.5 0 0 0 .233-.55c.042-.202.052-.386.052-.588V6.347c0-.276.08-.35.302-.404.024-.005 3.954-.797 4.138-.833.257-.049.378.025.378.294v3.524c0 .14-.001.28-.096.396-.094.115-.211.15-.348.178l-.31.062c-.393.08-.649.133-.88.223a1.4 1.4 0 0 0-.52.334 1.26 1.26 0 0 0-.34.994c.03.297.174.582.404.792a1.2 1.2 0 0 0 .577.294c.237.048.49.03.858-.044.197-.04.381-.098.556-.202a1.4 1.4 0 0 0 .438-.405q.173-.252.233-.549a2.7 2.7 0 0 0 .044-.589V2.865c0-.273-.143-.443-.4-.42-.04.003-.383.064-.424.073"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.7 KiB |
4
dbapp/static/bootstrap-icons/apple.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-apple" viewBox="0 0 16 16">
|
||||||
|
<path d="M11.182.008C11.148-.03 9.923.023 8.857 1.18c-1.066 1.156-.902 2.482-.878 2.516s1.52.087 2.475-1.258.762-2.391.728-2.43m3.314 11.733c-.048-.096-2.325-1.234-2.113-3.422s1.675-2.789 1.698-2.854-.597-.79-1.254-1.157a3.7 3.7 0 0 0-1.563-.434c-.108-.003-.483-.095-1.254.116-.508.139-1.653.589-1.968.607-.316.018-1.256-.522-2.267-.665-.647-.125-1.333.131-1.824.328-.49.196-1.422.754-2.074 2.237-.652 1.482-.311 3.83-.067 4.56s.625 1.924 1.273 2.796c.576.984 1.34 1.667 1.659 1.899s1.219.386 1.843.067c.502-.308 1.408-.485 1.766-.472.357.013 1.061.154 1.782.539.571.197 1.111.115 1.652-.105.541-.221 1.324-1.059 2.238-2.758q.52-1.185.473-1.282"/>
|
||||||
|
<path d="M11.182.008C11.148-.03 9.923.023 8.857 1.18c-1.066 1.156-.902 2.482-.878 2.516s1.52.087 2.475-1.258.762-2.391.728-2.43m3.314 11.733c-.048-.096-2.325-1.234-2.113-3.422s1.675-2.789 1.698-2.854-.597-.79-1.254-1.157a3.7 3.7 0 0 0-1.563-.434c-.108-.003-.483-.095-1.254.116-.508.139-1.653.589-1.968.607-.316.018-1.256-.522-2.267-.665-.647-.125-1.333.131-1.824.328-.49.196-1.422.754-2.074 2.237-.652 1.482-.311 3.83-.067 4.56s.625 1.924 1.273 2.796c.576.984 1.34 1.667 1.659 1.899s1.219.386 1.843.067c.502-.308 1.408-.485 1.766-.472.357.013 1.061.154 1.782.539.571.197 1.111.115 1.652-.105.541-.221 1.324-1.059 2.238-2.758q.52-1.185.473-1.282"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.4 KiB |
3
dbapp/static/bootstrap-icons/archive-fill.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-archive-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M12.643 15C13.979 15 15 13.845 15 12.5V5H1v7.5C1 13.845 2.021 15 3.357 15zM5.5 7h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1M.8 1a.8.8 0 0 0-.8.8V3a.8.8 0 0 0 .8.8h14.4A.8.8 0 0 0 16 3V1.8a.8.8 0 0 0-.8-.8z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 349 B |
3
dbapp/static/bootstrap-icons/archive.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-archive" viewBox="0 0 16 16">
|
||||||
|
<path d="M0 2a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1v7.5a2.5 2.5 0 0 1-2.5 2.5h-9A2.5 2.5 0 0 1 1 12.5V5a1 1 0 0 1-1-1zm2 3v7.5A1.5 1.5 0 0 0 3.5 14h9a1.5 1.5 0 0 0 1.5-1.5V5zm13-3H1v2h14zM5 7.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 394 B |
3
dbapp/static/bootstrap-icons/arrow-90deg-down.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-90deg-down" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M4.854 14.854a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 .708-.708L4 13.293V3.5A2.5 2.5 0 0 1 6.5 1h8a.5.5 0 0 1 0 1h-8A1.5 1.5 0 0 0 5 3.5v9.793l3.146-3.147a.5.5 0 0 1 .708.708z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 345 B |
3
dbapp/static/bootstrap-icons/arrow-90deg-left.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-90deg-left" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M1.146 4.854a.5.5 0 0 1 0-.708l4-4a.5.5 0 1 1 .708.708L2.707 4H12.5A2.5 2.5 0 0 1 15 6.5v8a.5.5 0 0 1-1 0v-8A1.5 1.5 0 0 0 12.5 5H2.707l3.147 3.146a.5.5 0 1 1-.708.708z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 344 B |
3
dbapp/static/bootstrap-icons/arrow-90deg-right.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-90deg-right" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M14.854 4.854a.5.5 0 0 0 0-.708l-4-4a.5.5 0 0 0-.708.708L13.293 4H3.5A2.5 2.5 0 0 0 1 6.5v8a.5.5 0 0 0 1 0v-8A1.5 1.5 0 0 1 3.5 5h9.793l-3.147 3.146a.5.5 0 0 0 .708.708z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 346 B |
3
dbapp/static/bootstrap-icons/arrow-90deg-up.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-90deg-up" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M4.854 1.146a.5.5 0 0 0-.708 0l-4 4a.5.5 0 1 0 .708.708L4 2.707V12.5A2.5 2.5 0 0 0 6.5 15h8a.5.5 0 0 0 0-1h-8A1.5 1.5 0 0 1 5 12.5V2.707l3.146 3.147a.5.5 0 1 0 .708-.708z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 344 B |
3
dbapp/static/bootstrap-icons/arrow-bar-down.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-bar-down" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M1 3.5a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13a.5.5 0 0 1-.5-.5M8 6a.5.5 0 0 1 .5.5v5.793l2.146-2.147a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 0 1 .708-.708L7.5 12.293V6.5A.5.5 0 0 1 8 6"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 373 B |
3
dbapp/static/bootstrap-icons/arrow-bar-left.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-bar-left" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M12.5 15a.5.5 0 0 1-.5-.5v-13a.5.5 0 0 1 1 0v13a.5.5 0 0 1-.5.5M10 8a.5.5 0 0 1-.5.5H3.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L3.707 7.5H9.5a.5.5 0 0 1 .5.5"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 373 B |
3
dbapp/static/bootstrap-icons/arrow-bar-right.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-bar-right" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M6 8a.5.5 0 0 0 .5.5h5.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 0 0-.708.708L12.293 7.5H6.5A.5.5 0 0 0 6 8m-2.5 7a.5.5 0 0 1-.5-.5v-13a.5.5 0 0 1 1 0v13a.5.5 0 0 1-.5.5"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 373 B |
3
dbapp/static/bootstrap-icons/arrow-bar-up.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-bar-up" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M8 10a.5.5 0 0 0 .5-.5V3.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 3.707V9.5a.5.5 0 0 0 .5.5m-7 2.5a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13a.5.5 0 0 1-.5-.5"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 374 B |
4
dbapp/static/bootstrap-icons/arrow-clockwise.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-clockwise" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2z"/>
|
||||||
|
<path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 349 B |
4
dbapp/static/bootstrap-icons/arrow-counterclockwise.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-counterclockwise" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M8 3a5 5 0 1 1-4.546 2.914.5.5 0 0 0-.908-.417A6 6 0 1 0 8 2z"/>
|
||||||
|
<path d="M8 4.466V.534a.25.25 0 0 0-.41-.192L5.23 2.308a.25.25 0 0 0 0 .384l2.36 1.966A.25.25 0 0 0 8 4.466"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 356 B |
3
dbapp/static/bootstrap-icons/arrow-down-circle-fill.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-circle-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.5 4.5a.5.5 0 0 0-1 0v5.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 316 B |
3
dbapp/static/bootstrap-icons/arrow-down-circle.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-circle" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8.5 4.5a.5.5 0 0 0-1 0v5.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 364 B |
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-left-circle-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M16 8A8 8 0 1 0 0 8a8 8 0 0 0 16 0m-5.904-2.803a.5.5 0 1 1 .707.707L6.707 10h2.768a.5.5 0 0 1 0 1H5.5a.5.5 0 0 1-.5-.5V6.525a.5.5 0 0 1 1 0v2.768z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 313 B |
3
dbapp/static/bootstrap-icons/arrow-down-left-circle.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-left-circle" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-5.904-2.854a.5.5 0 1 1 .707.708L6.707 9.95h2.768a.5.5 0 1 1 0 1H5.5a.5.5 0 0 1-.5-.5V6.475a.5.5 0 1 1 1 0v2.768z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 363 B |
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-left-square-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M2 16a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2zm8.096-10.803L6 9.293V6.525a.5.5 0 0 0-1 0V10.5a.5.5 0 0 0 .5.5h3.975a.5.5 0 0 0 0-1H6.707l4.096-4.096a.5.5 0 1 0-.707-.707"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 360 B |
3
dbapp/static/bootstrap-icons/arrow-down-left-square.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-left-square" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm10.096 3.146a.5.5 0 1 1 .707.708L6.707 9.95h2.768a.5.5 0 1 1 0 1H5.5a.5.5 0 0 1-.5-.5V6.475a.5.5 0 1 1 1 0v2.768z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 435 B |
3
dbapp/static/bootstrap-icons/arrow-down-left.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-left" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M2 13.5a.5.5 0 0 0 .5.5h6a.5.5 0 0 0 0-1H3.707L13.854 2.854a.5.5 0 0 0-.708-.708L3 12.293V7.5a.5.5 0 0 0-1 0z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 284 B |
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-right-circle-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8m5.904-2.803a.5.5 0 1 0-.707.707L9.293 10H6.525a.5.5 0 0 0 0 1H10.5a.5.5 0 0 0 .5-.5V6.525a.5.5 0 0 0-1 0v2.768z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 313 B |
3
dbapp/static/bootstrap-icons/arrow-down-right-circle.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-right-circle" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.854 5.146a.5.5 0 1 0-.708.708L9.243 9.95H6.475a.5.5 0 1 0 0 1h3.975a.5.5 0 0 0 .5-.5V6.475a.5.5 0 1 0-1 0v2.768z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 365 B |
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-right-square-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M14 16a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2zM5.904 5.197 10 9.293V6.525a.5.5 0 0 1 1 0V10.5a.5.5 0 0 1-.5.5H6.525a.5.5 0 0 1 0-1h2.768L5.197 5.904a.5.5 0 0 1 .707-.707"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 361 B |
3
dbapp/static/bootstrap-icons/arrow-down-right-square.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-right-square" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.854 3.146a.5.5 0 1 0-.708.708L9.243 9.95H6.475a.5.5 0 1 0 0 1h3.975a.5.5 0 0 0 .5-.5V6.475a.5.5 0 1 0-1 0v2.768z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 437 B |
3
dbapp/static/bootstrap-icons/arrow-down-right.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-right" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M14 13.5a.5.5 0 0 1-.5.5h-6a.5.5 0 0 1 0-1h4.793L2.146 2.854a.5.5 0 1 1 .708-.708L13 12.293V7.5a.5.5 0 0 1 1 0z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 287 B |
3
dbapp/static/bootstrap-icons/arrow-down-short.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-short" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M8 4a.5.5 0 0 1 .5.5v5.793l2.146-2.147a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 1 1 .708-.708L7.5 10.293V4.5A.5.5 0 0 1 8 4"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 313 B |
3
dbapp/static/bootstrap-icons/arrow-down-square-fill.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-square-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm6.5 4.5v5.793l2.146-2.147a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 1 1 .708-.708L7.5 10.293V4.5a.5.5 0 0 1 1 0"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 356 B |
3
dbapp/static/bootstrap-icons/arrow-down-square.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-square" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm8.5 2.5a.5.5 0 0 0-1 0v5.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 436 B |
3
dbapp/static/bootstrap-icons/arrow-down-up.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-down-up" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M11.5 15a.5.5 0 0 0 .5-.5V2.707l3.146 3.147a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 1 0 .708.708L11 2.707V14.5a.5.5 0 0 0 .5.5m-7-14a.5.5 0 0 1 .5.5v11.793l3.146-3.147a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 .708-.708L4 13.293V1.5a.5.5 0 0 1 .5-.5"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 455 B |