import { timeParse, formatSmartPercentage } from '@/utils';
export default ({ percent, title, unit = '%' }) => {
const value = percent.toFixed(1);
let thisColor = '';
if (value < 30) {
thisColor = '#16A34A';
} else if (value >= 30 && value <= 80) {
thisColor = '#2563EB';
} else {
thisColor = '#DC2626';
}
return {
series: [
{
type: 'gauge',
itemStyle: {
color: thisColor,
// shadowColor: thisColor,
// shadowBlur: 5,
// shadowOffsetX: 2,
// shadowOffsetY: 2,
},
progress: {
show: true,
width: 8,
},
axisLine: {
lineStyle: {
width: 8,
backgroundColor: '#F5F7FA',
},
},
axisTick: {
show: false,
},
axisLabel: {
show: false, // 隐藏刻度标签
},
// splitNumber: 0,
splitLine: {
length: 4,
lineStyle: {
width: 2,
color: '#999',
},
distance: 5,
},
anchor: {
show: false,
showAbove: false,
size: 25,
itemStyle: {
borderWidth: 10,
},
},
pointer: {
show: false,
},
title: {
show: false,
},
detail: {
valueAnimation: true,
width: '60%',
lineHeight: 40,
borderRadius: 8,
offsetCenter: [0, '0%'],
// fontSize: 16,
fontWeight: 'bolder',
formatter: `{a|{value}}{b|${unit}}`,
rich: {
a: {
color: '#1D2B3A',
lineHeight: 10,
fontSize: 20,
},
b: {
color: '#1D2B3A',
},
},
},
data: [
{
value,
},
],
},
],
graphic: [
{
type: 'text',
left: 'center',
bottom: 8,
style: {
text: title,
fill: '#333', // 设置标题文字颜色
fontSize: 14, // 设置标题文字大小
borderRadius: 999,
backgroundColor: '#F5F7FA',
padding: [6, 16],
},
},
],
};
};
export const getPreviewBarPie = (statusConfig, { title }) => {
return {
tooltip: {
show: false,
},
// legend: {
// top: '5%',
// left: 'center',
// },
series: [
{
name: 'Access From',
type: 'pie',
radius: ['50%', '65%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 3,
borderColor: '#fff',
},
label: {
show: false,
position: 'center',
},
emphasis: {
label: {
show: false,
fontSize: 40,
fontWeight: 'bold',
},
},
labelLine: {
show: false,
},
// data: [
// { value: data.running, itemStyle: {color: '#ff0000'} },
// { value: data.stopped , itemStyle: {color: '#ff0000'}},
// { value: data.error , itemStyle: {color: '#ff0000'}},
// ],
data: statusConfig.map((item) => ({
...item,
itemStyle: { color: item.color },
})),
},
],
grid: {
top: 1, // 上边距
bottom: 1, // 下边距
left: 1, // 左边距
right: 1, // 右边距
},
graphic: [
{
type: 'text', // 添加文本标签
left: 'center', // 文本标签水平居中
top: 'center', // 文本标签垂直居中
style: {
text: title, // 设置文本内容
fill: '#333', // 文字颜色
fontSize: 12, // 文字大小
},
},
],
};
};
export const getTopOptions = ({ core, memory }) => {
return {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
},
legend: {},
grid: {
left: '3%',
right: '4%',
bottom: '1%',
top: '10%',
containLabel: true,
},
xAxis: {
type: 'value',
boundaryGap: [0, 0.01],
axisLabel: {
formatter: function (value) {
return `${value} %`;
},
},
},
yAxis: {
type: 'category',
data: core.data.map((item) =>
item.name.length > 15 ? item.name.slice(0, 15) + '...' : item.name,
),
},
series: [
{
name: '算力',
type: 'bar',
data: core.data,
},
{
name: '显存',
type: 'bar',
data: memory.data,
},
],
};
};
export const getLineOptions = ({ data = [], unit = '%' }) => {
return {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
},
formatter: function (params) {
var res = params[0].name + '
';
for (var i = 0; i < params.length; i++) {
res +=
params[i].marker + formatSmartPercentage(params[i].value) + ` ${unit}
`;
}
return res;
},
},
grid: {
top: 7, // 上边距
bottom: 20, // 下边距
left: '10%', // 左边距
right: 10, // 右边距
},
xAxis: {
type: 'category',
data: data.map((item) => timeParse(+item.timestamp)),
axisLabel: {
formatter: function (value) {
return timeParse(value, 'HH:mm');
},
},
},
yAxis: {
type: 'value',
},
series: [
{
data: data.map((item) => {
return item.value;
}),
type: 'line',
areaStyle: {
normal: {
color: {
type: 'linear',
x: 0, // 渐变起始点 0%
y: 0, // 渐变起始点 0%
x2: 0, // 渐变结束点 100%
y2: 1, // 渐变结束点 100%
colorStops: [
{
offset: 0,
color: 'rgba(84, 112, 198, 0.16)', // 渐变起始颜色
},
{
offset: 1,
color: 'rgba(84, 112, 198, 0.00)', // 渐变结束颜色
},
],
global: false, // 缺省为 false
},
},
},
},
],
};
};