feat: Добавить отображение версии UI в нижнем колонтитуле и улучшить отображение ASN и CIDR с помощью моноширинного шрифта в менеджерах ASNs и IPRanges
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m51s

This commit is contained in:
2025-08-27 17:05:36 +07:00
parent 449f44b499
commit 001b4d9d98
6 changed files with 56 additions and 7 deletions
@@ -9,6 +9,7 @@ import {
} from '@tabler/icons-react';
import PortalDropdown from './PortalDropdown.jsx';
import { IconClock } from '@tabler/icons-react';
import { formatDateTimeWithRelative } from '../lib/datetime.js';
function PageHeaderActions({
loading = false,
@@ -149,10 +150,10 @@ function PageHeaderActions({
<div className="btn-group">
<button className="btn btn-outline-secondary" type="button" onClick={onHistory} title="История версий">История</button>
{lastModified && (
<button className="btn btn-outline-secondary" type="button" onClick={onHistory} title={`Последние изменения: ${new Date(lastModified).toLocaleString()}`}>
<button className="btn btn-outline-secondary" type="button" onClick={onHistory} title={`Последние изменения: ${formatDateTimeWithRelative(lastModified)}`}>
<IconClock className="me-1" />
<span className="d-none d-sm-inline">{new Date(lastModified).toLocaleTimeString()}</span>
<span className="d-inline d-sm-none">{new Date(lastModified).toLocaleTimeString()}</span>
<span className="d-none d-sm-inline">{formatDateTimeWithRelative(lastModified)}</span>
<span className="d-inline d-sm-none">{formatDateTimeWithRelative(lastModified)}</span>
</button>
)}
</div>
+3 -2
View File
@@ -1,6 +1,7 @@
import { useEffect, useState } from 'react';
import api from '../lib/api.js';
import { IconHash, IconClock, IconFileText, IconRefresh } from '@tabler/icons-react';
import { formatDateTimeWithRelative } from '../lib/datetime.js';
function S3MetaBar({ keys = [], className = '' }) {
const [meta, setMeta] = useState({});
@@ -35,8 +36,8 @@ function S3MetaBar({ keys = [], className = '' }) {
const it = meta[k];
return (
<div key={k} className="d-flex align-items-center gap-2 flex-wrap">
<span className="badge bg-blue-lt text-blue d-inline-flex align-items-center"><IconHash size={14} className="me-1" />{it?.etag || '—'}</span>
<span className="badge bg-blue-lt text-blue d-inline-flex align-items-center"><IconClock size={14} className="me-1" />{it?.lastModified ? new Date(it.lastModified).toLocaleString() : '—'}</span>
<span className="badge bg-blue-lt text-blue d-inline-flex align-items-center" title="ETag"><IconHash size={14} className="me-1" /><span className="font-monospace">{it?.etag || '—'}</span></span>
<span className="badge bg-blue-lt text-blue d-inline-flex align-items-center" title="Время последнего изменения"><IconClock size={14} className="me-1" />{it?.lastModified ? formatDateTimeWithRelative(it.lastModified) : '—'}</span>
<span className="badge bg-blue-lt text-blue d-inline-flex align-items-center"><IconFileText size={14} className="me-1" />{typeof it?.contentLength === 'number' ? `${it.contentLength} байт` : '—'}</span>
<button className="btn btn-outline-secondary btn-sm" type="button" onClick={() => copyMeta(k)} title="Копировать ETag/Last-Modified">
<IconFileText size={14} className="me-1" />Копировать