HTML 代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.">Nodes 网络设备筛选</title>
<style>
.filter-box {
width: 3px;
margin: 1px auto;
padding: 1px;
border: 1px solid #ccc;
border-radius: 5px;
}
.filter-input {
width: 1%;
padding: 8px;
margin: 5px 0;
border: 2px solid #7bff;
border-radius: 3px;
cursor: pointer;
}
.filter-input:hover {
background-color: #eee;
}
.result-list {
background-color: #f9f9f9;
padding: 1px;
border-radius: 5px;
}
.result-item {
background-color: #fff;
padding: 8px;
margin: 5px;
border-radius: 3px;
cursor: pointer;
}
input[type="text"] {
width: 1%;
margin: 1px 0;
}
</style>
</head>
<body>
<div class="filter-box">
<h3>Nodes 网络设备筛选</h3>
<div class="filter-input">
<label>设备分类:</label>
<select name="nodesClass">
<option value="server">服务器</option>
<option value="container">容器</option>
<option value="storage">存储</option>
<option value="network">网络</option>
</select>
</div>
<div class="filter-input">
<label>筛选条件:</label>
<input type="text" id="filterCondition" placeholder="请输入筛选条件">
</div>
<button onclick="filterNodes()">筛选</button>
<div class="result-list" id="resultList"></div>
</div>
<script>
function filterNodes() {
const nodesClass = document.getElementById('nodesClass').value;
const filterCondition = document.getElementById('filterCondition').value;
const resultList = document.getElementById('resultList');
// 筛选出符合设备分类和条件的设备
const resultItems = [];
const devices = document.querySelectorAll('.node');
devices.forEach(device => {
const node = device.querySelector('.node');
const nodeCategory = node.querySelector('span').textContent;
const condition = (nodeCategory === '运行时间' && node.textContent && node.textContent.includes('1h')) ||
(nodeCategory === '运行时间' && node.textContent && node.textContent.includes('>1h')) ||
(nodeCategory === '运行时间' && node.textContent && node.textContent.includes('<1h')) ||
(nodeCategory === '运行时间' && node.textContent && node.textContent.includes('<=1h')) ||
(nodeCategory === '运行时间' && node.textContent && node.textContent.includes('>=1h'));
if (condition === filterCondition) {
resultItems.push(node);
}
});
resultList.innerHTML = '';
resultItems.forEach(item => {
const itemElement = document.createElement('div');
itemElement.className = 'result-item';
itemElement.innerHTML = item.textContent + ': ' + item.textContent.dataset.nodeId + '<br>';
// 添加设备信息
const deviceContent = item.textContent.dataset.nodeId;
const parts = deviceContent.split('\n');
const type = parts[].toLowerCase();
const details = {
id: parts[1],
name: parts[2],
description: parts[3],
icon: parts[4],
iconUrl: parts[5],
status: parts[6],
statusColor: parts[7],
category: type,
label: type,
runningTime: parts[8],
storageSize: parts[9],
cpus: parts[1],
statusIsRunning: (parts[6] === 'running' || parts[6] === 'stopped'),
statusIs malfunctioning: parts[6] === 'malfunctioning'
};
// 添加设备信息到结果列表
itemElement.innerHTML += '<div class="device-info">
<h4>' + details.label + '</h4>'
<div class="device-info">
<p>Id: ' + details.id + '</p>'
<p>Name: ' + details.name + '</p>'
<p>Description: ' + details.description + '</p>'
<p>Icon: ' + details.icon + '</p>'
<p>Icon URL: ' + details.iconUrl + '</p>'
<p>Running Time: ' + details.runningTime + 'h</p>'
<p>Storage Size: ' + details.storageSize + 'MB</p>'
<p>CPU: ' + details.cpus + '台</p>'
<p>Status: ' + details.status + '</p>'
<p>Status Color: ' + details.statusColor + '</p>'
<p>Category: ' + details.label + '</p>'
<p>Running: ' + details.statusIsRunning + ' - ' + details.statusIs malfunctioning + '</p>'
</div>
</div>
resultList.appendChild(itemElement);
});
// 保存筛选结果
const savedResult = document.createElement('div');
savedResult.className = 'result-save';
savedResult.innerHTML = '筛选结果保存中...';
resultList.appendChild(savedResult);
// 重新开始筛选
document.getElementById('filterCondition').value = filterCondition;
document.getElementById('nodesClass').value = nodesClass;
filterNodes();
}
</script>
</body>
</html>
说明
-
筛选条件:用户可以通过输入筛选条件来选择特定的设备。
运行时间: 输入'1h'(仅运行时间),'>1h'(运行时间大于1小时),'<=1h'(运行时间小于等于1小时),'>=1h'(运行时间大于等于1小时)。存储空间: 输入'1TB'(仅存储空间大小),'>1TB'(存储空间大于1TB),'<=1TB'(存储空间小于等于1TB)。CPU类型: 输入'x86_64'(x86_64架构),'arm'( arm架构)。设备分类: 选择服务器、容器、存储或网络。
-
筛选设备:系统会根据用户的筛选条件筛选出符合设备分类和条件的设备,并显示筛选结果。
-
筛选结果:每个设备都会显示详细的设备信息,包括名称、描述、 icon、icon URL、运行时间、存储空间、CPU数量、状态等信息。
-
保存和重新筛选:用户可以保存筛选结果,并重新开始筛选,或者通过下拉菜单重新选择设备分类。
-
输出格式:结果会以列表形式展示,每个设备信息清晰易读。
这个工具非常直观,用户可以根据自己的需求进行筛选,同时也能快速了解筛选后的设备信息。









