2023-06-07 23:26:00 +08:00
|
|
|
|
import { Label } from 'semantic-ui-react';
|
|
|
|
|
|
|
2023-05-16 21:33:59 +08:00
|
|
|
|
export function renderText(text, limit) {
|
|
|
|
|
|
if (text.length > limit) {
|
|
|
|
|
|
return text.slice(0, limit - 3) + '...';
|
|
|
|
|
|
}
|
|
|
|
|
|
return text;
|
2023-06-07 23:26:00 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export function renderGroup(group) {
|
2023-06-16 15:20:06 +08:00
|
|
|
|
if (group === '') {
|
|
|
|
|
|
return <Label>default</Label>;
|
2023-06-07 23:26:00 +08:00
|
|
|
|
}
|
2023-06-16 15:20:06 +08:00
|
|
|
|
let groups = group.split(',');
|
2023-06-14 12:52:56 +08:00
|
|
|
|
groups.sort();
|
|
|
|
|
|
return <>
|
|
|
|
|
|
{groups.map((group) => {
|
2023-06-16 15:20:06 +08:00
|
|
|
|
if (group === 'vip' || group === 'pro') {
|
|
|
|
|
|
return <Label color='yellow'>{group}</Label>;
|
|
|
|
|
|
} else if (group === 'svip' || group === 'premium') {
|
|
|
|
|
|
return <Label color='red'>{group}</Label>;
|
2023-06-14 12:52:56 +08:00
|
|
|
|
}
|
2023-06-16 15:20:06 +08:00
|
|
|
|
return <Label>{group}</Label>;
|
2023-06-14 12:52:56 +08:00
|
|
|
|
})}
|
2023-06-16 15:20:06 +08:00
|
|
|
|
</>;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export function renderNumber(num) {
|
|
|
|
|
|
if (num >= 1000000000) {
|
|
|
|
|
|
return (num / 1000000000).toFixed(1) + 'B';
|
|
|
|
|
|
} else if (num >= 1000000) {
|
|
|
|
|
|
return (num / 1000000).toFixed(1) + 'M';
|
|
|
|
|
|
} else if (num >= 10000) {
|
|
|
|
|
|
return (num / 1000).toFixed(1) + 'k';
|
|
|
|
|
|
} else {
|
|
|
|
|
|
return num;
|
|
|
|
|
|
}
|
2023-06-20 20:09:17 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export function renderQuota(quota, digits = 2) {
|
|
|
|
|
|
let quotaPerUnit = localStorage.getItem('quota_per_unit');
|
|
|
|
|
|
let displayInCurrency = localStorage.getItem('display_in_currency');
|
|
|
|
|
|
quotaPerUnit = parseFloat(quotaPerUnit);
|
|
|
|
|
|
displayInCurrency = displayInCurrency === 'true';
|
|
|
|
|
|
if (displayInCurrency) {
|
|
|
|
|
|
return '$' + (quota / quotaPerUnit).toFixed(digits);
|
|
|
|
|
|
}
|
|
|
|
|
|
return renderNumber(quota);
|
2023-06-21 15:45:30 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export function renderQuotaWithPrompt(quota, digits) {
|
|
|
|
|
|
let displayInCurrency = localStorage.getItem('display_in_currency');
|
|
|
|
|
|
displayInCurrency = displayInCurrency === 'true';
|
|
|
|
|
|
if (displayInCurrency) {
|
|
|
|
|
|
return `(等价金额:${renderQuota(quota, digits)})`;
|
|
|
|
|
|
}
|
|
|
|
|
|
return '';
|
2023-10-31 00:03:22 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const colors = ['amber', 'blue', 'cyan', 'green', 'grey', 'indigo',
|
|
|
|
|
|
'light-blue', 'lime', 'orange', 'pink',
|
|
|
|
|
|
'purple', 'red', 'teal', 'violet', 'yellow'
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
export function stringToColor(str) {
|
|
|
|
|
|
let sum = 0;
|
|
|
|
|
|
// 对字符串中的每个字符进行操作
|
|
|
|
|
|
for (let i = 0; i < str.length; i++) {
|
|
|
|
|
|
// 将字符的ASCII值加到sum中
|
|
|
|
|
|
sum += str.charCodeAt(i);
|
|
|
|
|
|
}
|
|
|
|
|
|
// 使用模运算得到个位数
|
|
|
|
|
|
let i = sum % colors.length;
|
|
|
|
|
|
return colors[i];
|
2023-05-16 21:33:59 +08:00
|
|
|
|
}
|