diff --git a/frontend/src/ASNsNewManager.jsx b/frontend/src/ASNsNewManager.jsx
index b286a36..7405196 100644
--- a/frontend/src/ASNsNewManager.jsx
+++ b/frontend/src/ASNsNewManager.jsx
@@ -48,6 +48,18 @@ function ASNsNewManager() {
})();
}, []);
+ const renderCommunityBadge = (value) => {
+ const v = String(value ?? '').trim();
+ if (!v) return —;
+ const meta = communities.find(c => c.value === v);
+ const color = (meta?.color || 'blue').toLowerCase().replace(/[^a-z-]/g, '');
+ const cls = `badge bg-${color}-lt text-${color}`;
+ const title = meta ? `${meta.name ? meta.name + ' — ' : ''}${meta.description || ''}${meta.tags && meta.tags.length ? ' (' + meta.tags.join(', ') + ')' : ''}` : '';
+ return (
+ {v}
+ );
+ };
+
const isValidAsn = (value) => /^[0-9]+$/.test(String(value).trim());
// Допускаем как числовые, так и строковые (AS:NNN) community
const isValidCommunity = (value) => /^(\d+|\d+:\d+)$/.test(String(value).trim());
@@ -423,7 +435,7 @@ function ASNsNewManager() {
{paginatedItems.map((item) => (
| {item.asn} |
- {item.community} |
+ {renderCommunityBadge(item.community)} |
{editingAsn === item.asn ? (
<>
@@ -543,9 +555,12 @@ function ASNsNewManager() {
)}
{/* Общий список подсказок community */}
>
);
diff --git a/frontend/src/DomainsNewManager.jsx b/frontend/src/DomainsNewManager.jsx
index b05bbf9..b04c2ce 100644
--- a/frontend/src/DomainsNewManager.jsx
+++ b/frontend/src/DomainsNewManager.jsx
@@ -48,6 +48,18 @@ function DomainsNewManager() {
})();
}, []);
+ const renderCommunityBadge = (value) => {
+ const v = String(value ?? '').trim();
+ if (!v) return —;
+ const meta = communities.find(c => c.value === v);
+ const color = (meta?.color || 'blue').toLowerCase().replace(/[^a-z-]/g, '');
+ const cls = `badge bg-${color}-lt text-${color}`;
+ const title = meta ? `${meta.name ? meta.name + ' — ' : ''}${meta.description || ''}${meta.tags && meta.tags.length ? ' (' + meta.tags.join(', ') + ')' : ''}` : '';
+ return (
+ {v}
+ );
+ };
+
const isValidDomain = (value) => {
const v = String(value).trim().toLowerCase();
// Простой валидатор FQDN: sub.domain.tld
@@ -429,7 +441,7 @@ function DomainsNewManager() {
{paginatedItems.map((item) => (
|
| {item.domain} |
- {item.community} |
+ {renderCommunityBadge(item.community)} |
{editingDomain === item.domain ? (
<>
@@ -549,9 +561,12 @@ function DomainsNewManager() {
)}
{/* Общий список подсказок community */}
>
);
diff --git a/frontend/src/IPRangesManager.jsx b/frontend/src/IPRangesManager.jsx
index 3f15f69..2f0f5f3 100644
--- a/frontend/src/IPRangesManager.jsx
+++ b/frontend/src/IPRangesManager.jsx
@@ -48,6 +48,18 @@ function IPRangesManager() {
})();
}, []);
+ const renderCommunityBadge = (value) => {
+ const v = String(value ?? '').trim();
+ if (!v) return —;
+ const meta = communities.find(c => c.value === v);
+ const color = (meta?.color || 'blue').toLowerCase().replace(/[^a-z-]/g, '');
+ const cls = `badge bg-${color}-lt text-${color}`;
+ const title = meta ? `${meta.name ? meta.name + ' — ' : ''}${meta.description || ''}${meta.tags && meta.tags.length ? ' (' + meta.tags.join(', ') + ')' : ''}` : '';
+ return (
+ {v}
+ );
+ };
+
const isValidIPv4 = (ip) => {
const octets = ip.split('.');
if (octets.length !== 4) return false;
@@ -438,7 +450,7 @@ function IPRangesManager() {
{paginatedItems.map((item) => (
|
| {item.ipRange} |
- {item.community} |
+ {renderCommunityBadge(item.community)} |
{editingIp === item.ipRange ? (
<>
@@ -563,9 +575,12 @@ function IPRangesManager() {
)}
{/* Общий список подсказок community */}
>
);
|