49 lines
1.8 KiB
TypeScript
49 lines
1.8 KiB
TypeScript
import { incidentLabel } from './incidentLabels'
|
|
import type { IncidentFlagRow, IncidentLogRow } from '../../api/flags'
|
|
|
|
export function formatIncidentDatetime(iso?: string | null): string {
|
|
if (!iso) return ''
|
|
const d = new Date(iso)
|
|
if (Number.isNaN(d.getTime())) return String(iso)
|
|
const mm = String(d.getMonth() + 1).padStart(2, '0')
|
|
const dd = String(d.getDate()).padStart(2, '0')
|
|
const yyyy = d.getFullYear()
|
|
const hh = String(d.getHours()).padStart(2, '0')
|
|
const min = String(d.getMinutes()).padStart(2, '0')
|
|
return `${mm}-${dd}-${yyyy} ${hh}:${min}`
|
|
}
|
|
|
|
export function lastUpdaterCell(flag: IncidentFlagRow): string {
|
|
const st = flag.flag_state
|
|
if (st === 'Open') {
|
|
return String(flag.updated_by_open_name ?? flag.updated_by_open ?? 'N/A')
|
|
}
|
|
if (st === 'Closed') {
|
|
return String(flag.updated_by_closed_name ?? flag.updated_by_closed ?? 'N/A')
|
|
}
|
|
if (st === 'Canceled') {
|
|
return String(flag.updated_by_canceled_name ?? flag.updated_by_canceled ?? 'N/A')
|
|
}
|
|
return 'N/A'
|
|
}
|
|
|
|
export function descriptionForFlag(flag: IncidentFlagRow): string {
|
|
const st = flag.flag_state
|
|
if (st === 'Open') return flag.open_description ?? 'N/A'
|
|
if (st === 'Closed') return flag.close_description ?? 'N/A'
|
|
if (st === 'Canceled') return flag.cancel_description ?? 'N/A'
|
|
return 'N/A'
|
|
}
|
|
|
|
export function descriptionForLog(log: IncidentLogRow): string {
|
|
const st = log.flag_state
|
|
if (st === 'Open' && log.open_description) return String(log.open_description)
|
|
if (st === 'Closed' && log.close_description) return String(log.close_description)
|
|
if (st === 'Canceled' && log.cancel_description) return String(log.cancel_description)
|
|
return 'N/A'
|
|
}
|
|
|
|
export function incidentTypeLabel(flagKey: string | undefined): string {
|
|
return incidentLabel(flagKey)
|
|
}
|