import { $t } from '@/locales'; /** * Transform record to option * * @example * ```ts * const record = { * key1: 'label1', * key2: 'label2' * }; * const options = transformRecordToOption(record); * // [ * // { value: 'key1', label: 'label1' }, * // { value: 'key2', label: 'label2' } * // ] * ```; * * @param record */ export function transformRecordToOption>(record: T) { return Object.entries(record).map(([value, label]) => ({ value, label })) as CommonType.Option[]; } /** * Transform record to option with keys of number * * @param record * @param reverse */ export function transformRecordToNumberOption>(record: T, reverse: boolean = false) { const options = Object.entries(record).map(([value, label]) => ({ value: Number(value), label })) as CommonType.Option[]; return reverse ? options.sort((a: any, b: any) => b.value - a.value) : options; } /** * Translate options * * @param options */ export function translateOptions(options: CommonType.Option[]) { return options.map(option => ({ ...option, label: $t(option.label as App.I18n.I18nKey) })); } /** * Translate options * * @param options */ export function translateOptions2(options: string[]) { return options.map(option => ({ value: option, label: option })); } /** * tag Color * * @param index * @param total */ export function tagColor(index: number, total: number = 5) { const tagMap: Record = { 0: 'error', 1: 'info', 2: 'success', 3: 'warning', 4: 'default' }; return tagMap[index % total]; }