CI / changes (push) Successful in 11s
CI / commitlint (push) Has been skipped
CI / openapi (push) Has been skipped
CI / web (push) Successful in 1m3s
CI / go (push) Has been skipped
CI / bird2 (push) Has been skipped
CI / release (push) Successful in 4m4s
Updated the ModuleDetailComponent to include new queries for communities and DoH profiles, improving data handling. Added a module type alert function for better user guidance and refined the UI to display module type in a more user-friendly manner. Removed unused components and streamlined the refresh functionality for better performance.
42 lines
1.4 KiB
TypeScript
42 lines
1.4 KiB
TypeScript
import type { BgpCommunity, DohProfile, ModuleRow } from '@/types/api'
|
|
|
|
export const NONE_OPTION = '__none__'
|
|
|
|
export function communityLabel(id: string | null | undefined, communities: BgpCommunity[]): string {
|
|
if (!id) return '—'
|
|
const c = communities.find((x) => x.id === id)
|
|
if (!c) return `${id.slice(0, 8)}…`
|
|
const t = c.title?.trim()
|
|
return t || c.community
|
|
}
|
|
|
|
export function communityOptionLabel(c: BgpCommunity): string {
|
|
const t = c.title?.trim()
|
|
return t || c.community
|
|
}
|
|
|
|
export function nullableSelectValue(value: string | null | undefined): string {
|
|
if (value === null || value === undefined || value === '') return NONE_OPTION
|
|
return value
|
|
}
|
|
|
|
export function fromNullableSelect(value: string): string | null {
|
|
if (value === NONE_OPTION || value === '') return null
|
|
return value
|
|
}
|
|
|
|
export function moduleDohProfileIds(modRow: ModuleRow | null): string[] {
|
|
if (!modRow) return []
|
|
if (modRow.doh_profile_ids?.length) return modRow.doh_profile_ids
|
|
return modRow.doh_profile_id ? [modRow.doh_profile_id] : []
|
|
}
|
|
|
|
export function dohProfileLabel(id: string, dohProfiles: DohProfile[]): string {
|
|
const p = dohProfiles.find((d) => d.id === id)
|
|
return p ? (p.name?.trim() ? `${p.name} (${p.url})` : p.url) : `${id.slice(0, 8)}…`
|
|
}
|
|
|
|
export function normalizeCdnSourceKind(k: string): 'plaintext' | 'json' {
|
|
return k.trim().toLowerCase() === 'json' ? 'json' : 'plaintext'
|
|
}
|