Spaces:
Paused
Paused
import { IFactory } from '@/interfaces/database/llm'; | |
import isObject from 'lodash/isObject'; | |
import snakeCase from 'lodash/snakeCase'; | |
export const isFormData = (data: unknown): data is FormData => { | |
return data instanceof FormData; | |
}; | |
const excludedFields = ['img2txt_id']; | |
const isExcludedField = (key: string) => { | |
return excludedFields.includes(key); | |
}; | |
export const convertTheKeysOfTheObjectToSnake = (data: unknown) => { | |
if (isObject(data) && !isFormData(data)) { | |
return Object.keys(data).reduce<Record<string, any>>((pre, cur) => { | |
const value = (data as Record<string, any>)[cur]; | |
pre[isFormData(value) || isExcludedField(cur) ? cur : snakeCase(cur)] = | |
value; | |
return pre; | |
}, {}); | |
} | |
return data; | |
}; | |
export const getSearchValue = (key: string) => { | |
const params = new URL(document.location as any).searchParams; | |
return params.get(key); | |
}; | |
// Formatize numbers, add thousands of separators | |
export const formatNumberWithThousandsSeparator = (numberStr: string) => { | |
const formattedNumber = numberStr.replace(/\B(?=(\d{3})+(?!\d))/g, ','); | |
return formattedNumber; | |
}; | |
const orderFactoryList = [ | |
'OpenAI', | |
'Moonshot', | |
'ZHIPU-AI', | |
'Ollama', | |
'Xinference', | |
]; | |
export const sortLLmFactoryListBySpecifiedOrder = (list: IFactory[]) => { | |
const finalList: IFactory[] = []; | |
orderFactoryList.forEach((orderItem) => { | |
const index = list.findIndex((item) => item.name === orderItem); | |
if (index !== -1) { | |
finalList.push(list[index]); | |
} | |
}); | |
list.forEach((item) => { | |
if (finalList.every((x) => x.name !== item.name)) { | |
finalList.push(item); | |
} | |
}); | |
return finalList; | |
}; | |
export const filterOptionsByInput = ( | |
input: string, | |
option: { label: string; value: string } | undefined, | |
) => (option?.label ?? '').toLowerCase().includes(input.toLowerCase()); | |
export const toFixed = (value: unknown, fixed = 2) => { | |
if (typeof value === 'number') { | |
return value.toFixed(fixed); | |
} | |
return value; | |
}; | |