feat: Enhance ASNsNewManager with input validation, import/export functionality, and improved UI feedback for better user experience
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 7m32s
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 7m32s
This commit is contained in:
@@ -479,7 +479,7 @@ function ServerManager() {
|
||||
{/* Таблица серверов на всю ширину */}
|
||||
<div className="card w-100">
|
||||
<div className="card-header d-flex justify-content-between align-items-center">
|
||||
<h3 className="card-title mb-0">Список серверов</h3>
|
||||
<h3 className="card-title mb-0">Список серверов <span className="badge bg-blue-lt text-blue ms-2">{filteredServers.length}</span></h3>
|
||||
<div className="d-flex gap-2 w-75">
|
||||
{/* Фильтры и поиск */}
|
||||
<select className="form-select w-auto" value={filterTunnel} onChange={e => { setFilterTunnel(e.target.value); setCurrentPage(1); }}>
|
||||
@@ -512,6 +512,14 @@ function ServerManager() {
|
||||
onChange={e => { setSearchTerm(e.target.value); setCurrentPage(1); }}
|
||||
/>
|
||||
</div>
|
||||
<button
|
||||
className="btn btn-outline-secondary"
|
||||
type="button"
|
||||
onClick={() => { setFilterTunnel(''); setFilterCountry(''); setFilterProvider(''); setSearchTerm(''); setCurrentPage(1); }}
|
||||
title="Сбросить фильтры"
|
||||
>
|
||||
Сбросить
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div className="table-responsive">
|
||||
@@ -571,7 +579,11 @@ function ServerManager() {
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{paginatedServers.map((server) => (
|
||||
{paginatedServers.length === 0 ? (
|
||||
<tr>
|
||||
<td colSpan={8} className="text-center text-muted py-4">Ничего не найдено. Измените фильтры или поиск.</td>
|
||||
</tr>
|
||||
) : paginatedServers.map((server) => (
|
||||
<tr key={server.ip} className={editingServer === server.ip ? 'table-info' : ''}>
|
||||
<td>{server.ip}</td>
|
||||
<td>{server.dns}</td>
|
||||
|
||||
Reference in New Issue
Block a user