gtsoft-snail-job-admin/src/utils/common.ts

87 lines
1.7 KiB
TypeScript
Raw Normal View History

2024-03-21 10:57:53 +08:00
import { $t } from '@/locales';
2024-03-08 17:59:45 +08:00
/**
* 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<T extends Record<string, string>>(record: T) {
return Object.entries(record).map(([value, label]) => ({
value,
label
2024-03-21 10:57:53 +08:00
})) as CommonType.Option<keyof T>[];
}
/**
* Transform record to option with keys of number
*
* @param record
2024-04-20 22:36:09 +08:00
* @param reverse
*/
export function transformRecordToNumberOption<T extends Record<number, string>>(record: T, reverse: boolean = false) {
const options = Object.entries(record).map(([value, label]) => ({
value: Number(value),
label
})) as CommonType.Option<keyof T>[];
return reverse ? options.sort((a: any, b: any) => b.value - a.value) : options;
}
2024-03-21 10:57:53 +08:00
/**
* Translate options
*
* @param options
*/
2024-04-19 17:42:11 +08:00
export function translateOptions(options: CommonType.Option<string | number>[]) {
2024-03-21 10:57:53 +08:00
return options.map(option => ({
...option,
label: $t(option.label as App.I18n.I18nKey)
}));
2024-03-08 17:59:45 +08:00
}
/**
* Translate options
*
* @param options
*/
export function translateOptions2(options: string[]) {
return options.map(option => ({
value: option,
label: option
}));
}
/**
* tag Color
*
* @param index
*/
2024-04-29 09:06:51 +08:00
export function tagColor(index: number) {
const tagMap: Record<number, NaiveUI.ThemeColor> = {
0: 'error',
1: 'info',
2: 'success',
3: 'warning',
4: 'default'
};
if (index === null || index < 0) {
return tagMap[1];
}
2024-04-29 09:06:51 +08:00
return tagMap[index % 5];
}