/
kreyndelHam
/
Konstructorium
Обзор
Документация
Войти
/
kreyndelHam
/
Konstructorium
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
1
CI/CD
Аналитика
Безопасность
dev
frontend/src/utils/adminAnalyticsTabs.js
95 строк
3 KB
MihahamYT
Added gigachat logs
24 май 2026, 15:13
24 май 2026, 15:13
803a88c
Код
Авторство
О чём код?
/** * Analytics section and tab routing helpers for the admin analytics page. */ export const ANALYTICS_SECTION_BUSINESS = 'business' export const ANALYTICS_SECTION_WEB = 'web' export const ANALYTICS_SECTION_PLATFORM = 'platform' export const BUSINESS_ANALYTICS_TABS = ['overview', 'sales', 'users', 'catalog', 'activity'] export const WEB_ANALYTICS_TABS = ['traffic', 'pages', 'sources', 'technology', 'errors', 'api', 'realtime'] export const PLATFORM_ANALYTICS_TABS = ['services', 'gigachat'] const LEGACY_WEB_TABS = new Set(WEB_ANALYTICS_TABS) /** * Resolve section/tab from URL search params with backward compatibility. * * @param {URLSearchParams} searchParams * @returns {{ section: string, tab: string }} */ export function resolveAnalyticsRoute(searchParams) { const explicitSection = searchParams.get('section') const tab = searchParams.get('tab') || 'overview' if (explicitSection === ANALYTICS_SECTION_WEB) { return { section: ANALYTICS_SECTION_WEB, tab: WEB_ANALYTICS_TABS.includes(tab) ? tab : 'traffic', } } if (explicitSection === ANALYTICS_SECTION_PLATFORM) { return { section: ANALYTICS_SECTION_PLATFORM, tab: PLATFORM_ANALYTICS_TABS.includes(tab) ? tab : 'services', } } if (explicitSection === ANALYTICS_SECTION_BUSINESS) { const normalizedTab = tab === 'operations' ? 'activity' : tab return { section: ANALYTICS_SECTION_BUSINESS, tab: BUSINESS_ANALYTICS_TABS.includes(normalizedTab) ? normalizedTab : 'overview', } } if (LEGACY_WEB_TABS.has(tab)) { return { section: ANALYTICS_SECTION_WEB, tab } } if (tab === 'services') { return { section: ANALYTICS_SECTION_PLATFORM, tab: 'services' } } if (tab === 'gigachat') { return { section: ANALYTICS_SECTION_PLATFORM, tab: 'gigachat' } } if (tab === 'operations') { return { section: ANALYTICS_SECTION_BUSINESS, tab: 'activity' } } return { section: ANALYTICS_SECTION_BUSINESS, tab: BUSINESS_ANALYTICS_TABS.includes(tab) ? tab : 'overview', } } /** * Return tab ids for a given analytics section. * * @param {string} section * @returns {string[]} */ export function tabsForAnalyticsSection(section) { if (section === ANALYTICS_SECTION_WEB) { return WEB_ANALYTICS_TABS } if (section === ANALYTICS_SECTION_PLATFORM) { return PLATFORM_ANALYTICS_TABS } return BUSINESS_ANALYTICS_TABS } /** * Build translation key suffix for an analytics tab label. * * @param {string} tab * @returns {string} */ export function analyticsTabTranslationKey(tab) { const keySuffix = tab.charAt(0).toUpperCase() + tab.slice(1) if (tab === 'activity') { return 'analytics.tabActivity' } if (tab === 'gigachat') { return 'analytics.tabGigachat' } return `analytics.tab${keySuffix}` }