Files
TeleWave/frontend/src/features/admin/channels/lib/format.ts
T

39 lines
1.5 KiB
TypeScript

/** Утилиты форматирования для карточек канала (без React). */
export function formatTime(iso: string | null) {
if (!iso) return '—'
return new Date(iso).toLocaleString([], {
day: '2-digit',
month: '2-digit',
hour: '2-digit',
minute: '2-digit',
})
}
/** Минуты суток → «HH:MM:00» — формат `TimeOnly` на сервере. */
export function toTime(minutes: number): string {
const m = ((minutes % (24 * 60)) + 24 * 60) % (24 * 60)
return `${String(Math.floor(m / 60)).padStart(2, '0')}:${String(m % 60).padStart(2, '0')}:00`
}
/**
* Момент UTC во времени канала. Сетка задаётся в нём, поэтому предпросмотр показывается так же:
* локальное время админа тут только запутало бы.
*/
export function channelTime(iso: string, utcOffsetMinutes: number): Date {
return new Date(new Date(iso).getTime() + utcOffsetMinutes * 60_000)
}
/** «HH:MM» во времени канала. */
export function formatChannelTime(iso: string, utcOffsetMinutes: number): string {
const d = channelTime(iso, utcOffsetMinutes)
return `${String(d.getUTCHours()).padStart(2, '0')}:${String(d.getUTCMinutes()).padStart(2, '0')}`
}
/** ffmpeg-цвет (0xRRGGBB / имя) → CSS для превью-плашки. */
export function cssColor(value: string): string {
const v = value.trim()
if (v.startsWith('0x')) return `#${v.slice(2)}`
return v
}