openFuyao is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN 'AS IS' BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details. */
function filterOverviewType(type, params) {
let data = '';
data = type === 'workload' ? params.name : type;
return data;
}
function filterStatusName(status, intl) {
if (!intl) return status;
let name = '';
switch (status) {
case 'online': {
name = intl.formatMessage({ id: 'workload.status.online' });
break;
}
case 'offline': {
name = intl.formatMessage({ id: 'workload.status.offline' });
break;
}
case 'oversold': {
name = intl.formatMessage({ id: 'workload.status.oversold' });
break;
}
case 'active': {
name = intl.formatMessage({ id: 'node.status.normal' });
break;
}
case 'inactive': {
name = intl.formatMessage({ id: 'node.status.abnormal' });
break;
}
default: {
name = '';
break;
}
}
return name;
}
function reseverStatusName(name, intl) {
if (!intl) return name;
let reseverName = '';
const onlineText = intl.formatMessage({ id: 'workload.status.online' });
const offlineText = intl.formatMessage({ id: 'workload.status.offline' });
const oversoldText = intl.formatMessage({ id: 'workload.status.oversold' });
switch (name) {
case onlineText: {
reseverName = 'online';
break;
}
case offlineText: {
reseverName = 'offline';
break;
}
case oversoldText: {
reseverName = 'oversold';
break;
}
default: {
reseverName = '';
break;
}
}
return reseverName;
}
function overviewUsedStatus(name, intl) {
if (!intl) return name;
let translaterName = '';
switch (name) {
case 'normal': {
translaterName = intl.formatMessage({ id: 'node.status.normal' });
break;
}
case 'oversold': {
translaterName = intl.formatMessage({ id: 'workload.status.oversold' });
break;
}
case 'colocation': {
translaterName = intl.formatMessage({ id: 'workload.colocation' });
break;
}
default: {
translaterName = '';
break;
}
}
return translaterName;
}
function compareObjKeys(data, searchName) {
let arr = [];
let result = false;
if (data.labels) {
Object.keys(data.labels).forEach((key) => {
arr.push(key);
});
arr.forEach((i) => {
if (i.replace(/\s+/g, '') === searchName.split(':')[0].replace(/\s+/g, '')) {
if (data.labels[i].replace(/\s+/g, '') === searchName.split(':')[1].replace(/\s+/g, '')) {
result = true;
}
}
});
}
return result;
}
function filterOverviewRouter(type, data) {
let obj = {
url: '',
status: '',
};
switch (type) {
case 'node':
obj = {
url: `/${containerRouterPrefix}/nodeManage`,
status: data.seriesName,
};
break;
case 'pod':
obj = {
url: `/${containerRouterPrefix}/workload/pod`,
status: data.seriesName,
};
break;
case 'application':
obj = {
url: `/${containerRouterPrefix}/applicationManageHelm`,
status: data.name,
};
break;
case 'extend':
obj = {
url: `/${containerRouterPrefix}/extendManage`,
status: data.name,
};
break;
case 'Deployment':
obj = {
url: `/${containerRouterPrefix}/workload/deployment`,
status: data.seriesName,
};
break;
case 'StatefulSet':
obj = {
url: `/${containerRouterPrefix}/workload/statefulSet`,
status: data.seriesName,
};
break;
case 'DaemonSet':
obj = {
url: `/${containerRouterPrefix}/workload/daemonSet`,
status: data.seriesName,
};
break;
default: {
}
}
return obj;
}
function filterEchartsOption(series, leftName, theme) {
let option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
},
legend: {
right: '10%',
top: '10%',
borderRadius: '50%',
borderWidth: 0,
padding: 5,
itemGap: 10,
itemWidth: 8,
itemHeight: 8,
icon: 'circle',
formatter: (name) => {
let _name = '';
series.forEach((item) => {
if (item.name === name) {
_name = item.name;
}
});
return _name;
},
textStyle: {
color: theme === 'light' ? 'black' : '#f7f7f7',
},
},
grid: {
left: '4%',
bottom: '',
containLabel: true,
},
xAxis: {
type: 'value',
axisLabel: {
show: true,
},
splitLine: {
show: true,
lineStyle: {
type: 'dashed',
},
},
axisTick: {
show: false,
},
axisLine: {
show: false,
},
},
yAxis: {
type: 'category',
axisLine: {
show: false,
},
axisLabel: {
textStyle: {
color: theme === 'light' ? 'black' : '#89939b',
},
},
axisTick: {
show: false,
},
data: leftName,
},
series,
};
return option;
}
function generateRandomColorHex() {
const letters = '0123456789ABCDEF';
let color = '#';
for (let i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
function filterOverViewAreaEcharts(data1, data2) {
let _data = [];
for (let i = 0; i < data1.length; i++) {
let _singleArr = [];
let _singObj = { name: '', time: [], data: [] };
_singleArr = data2.filter((item) => item.type === data1[i]);
_singleArr.forEach((item2) => {
_singObj.name = item2.type;
_singObj.time.push(dayjs(item2.timestamp * 1000).format('MM/DD HH:mm'));
_singObj.data.push(item2.value);
});
_data.push(_singObj);
}
return _data;
}
export {
filterOverviewType,
filterStatusName,
reseverStatusName,
compareObjKeys,
filterOverviewRouter,
filterEchartsOption,
generateRandomColorHex,
overviewUsedStatus,
filterOverViewAreaEcharts,
};