Косметика

- пересмотрено меню в шапке и подвале
- ссылка для тв + qr-код теперь по умолчанию зеркальные, с протоколом и подсказкой про .m3u
- предупреждение о большом кол-ве каналов теперь справа и скрывается после загрузки списка
- увеличен шрифт в табилце основных данных листа
This commit is contained in:
2025-06-10 09:37:43 +08:00
parent 7f10930b7b
commit a36b3e1e9a
6 changed files with 65 additions and 39 deletions

View File

@@ -27,11 +27,6 @@
{% block header %}
<h2>О плейлисте: {{ playlist.name }}</h2>
{% if (playlist.channels|length > 500) %}
<div class="alert alert-warning small" role="alert">
В плейлисте очень много каналов. На загрузку их списка и логотипов потребуется некоторое время.
</div>
{% endif %}
{% if playlist.isOnline is same as(false) %}
<div class="alert alert-danger small" role="alert">
Ошибка плейлиста: {{ playlist.content }}
@@ -64,7 +59,7 @@
</a>
</li>
</ul>
<div class="tab-content small">
<div class="tab-content">
<div class="tab-pane fade show active" id="tab-data" tabindex="0">
<table class="table table-dark table-hover small mb-lg-5">
<tbody>
@@ -92,11 +87,13 @@
</tr>
<tr>
<th scope="row">Ccылка для ТВ</th>
<td><b onclick="prompt('Скопируй адрес плейлиста', 'm3u.su/{{ playlist.code }}')"
<td>
<b onclick="prompt('Скопируй адрес плейлиста. Если не работает, добавь \'.m3u\' в конец.', '{{ mirror_url(playlist.code) }}')"
data-bs-toggle="tooltip"
data-bs-placement="top"
title="Нажми на ссылку, чтобы скопировать её в буфер обмена"
class="font-monospace cursor-pointer text-break">m3u.su/{{ playlist.code }}</b></td>
class="font-monospace cursor-pointer text-break">{{ mirror_url(playlist.code) }}</b>
</td>
</tr>
<tr>
<th scope="row">Источник</th>
@@ -166,11 +163,6 @@
>
<ion-icon name="qr-code-outline"></ion-icon>&nbsp;QR-код
</button>
<textarea class="form-control bg-dark text-light font-monospace mb-3 mb-md-0 m3u-raw"
rows="40"
id="m3u-raw"
readonly
>{{ playlist.content }}</textarea>
<div class="modal fade" id="qrcode-popup" tabindex="-1">
<div class="modal-dialog ">
<div class="modal-content bg-dark">
@@ -184,6 +176,11 @@
</div>
</div>
</div>
<textarea class="form-control bg-dark text-light font-monospace mb-3 mb-md-0 m3u-raw"
rows="40"
id="m3u-raw"
readonly
>{{ playlist.content }}</textarea>
</div>
</div>
</div>
@@ -194,6 +191,14 @@
{% if (playlist.groups|length > 1) %}
<div class="row my-3">
<div class="col-12">
{% if (playlist.channels|length >= 500) %}
<div class="alert alert-warning small" role="alert" id="toomuchalert">
<div class="spinner-border text-success spinner-border-sm" role="status">
<span class="visually-hidden">Загрузка...</span>
</div>
В плейлисте очень много каналов. На загрузку их списка и логотипов потребуется некоторое время.
</div>
{% endif %}
<div class="input-group">
<select id="groupSelector"
class="form-select form-select-sm border-secondary bg-dark text-light"
@@ -382,6 +387,11 @@
list.on('updated', (data) => document.getElementById('chcount').innerText = data.visibleItems.length)
document.getElementById('search-field').addEventListener('keyup', (e) => list.search(e.target.value))
document.addEventListener("DOMContentLoaded", () => {
const alert = document.getElementById("toomuchalert");
!!alert && alert.remove()
});
function savePlaylist() {
const link = document.createElement("a");
const content = document.getElementById("m3u-raw").value