|
|
@ -137,6 +137,108 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- 统计配置管理 --> |
|
|
|
<div class="row mt-4"> |
|
|
|
<div class="col-12"> |
|
|
|
<div class="card"> |
|
|
|
<div class="card-header"> |
|
|
|
<h3 class="card-title">统计配置管理</h3> |
|
|
|
</div> |
|
|
|
<div class="card-body"> |
|
|
|
<div class="row"> |
|
|
|
<div class="col-md-6"> |
|
|
|
<div class="card"> |
|
|
|
<div class="card-header"> |
|
|
|
<h6>全局统计配置</h6> |
|
|
|
</div> |
|
|
|
<div class="card-body"> |
|
|
|
<div class="form-group"> |
|
|
|
<label>默认Samples:</label> |
|
|
|
<div class="form-check"> |
|
|
|
<input class="form-check-input" type="checkbox" id="globalSamples"> |
|
|
|
<label class="form-check-label" for="globalSamples">启用Samples</label> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="form-group"> |
|
|
|
<label>默认RF:</label> |
|
|
|
<div class="form-check"> |
|
|
|
<input class="form-check-input" type="checkbox" id="globalRf"> |
|
|
|
<label class="form-check-label" for="globalRf">启用RF</label> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<button class="btn btn-primary btn-sm" onclick="loadGlobalConfig()">加载配置</button> |
|
|
|
<button class="btn btn-success btn-sm" onclick="saveGlobalConfig()">保存配置</button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="col-md-6"> |
|
|
|
<div class="card"> |
|
|
|
<div class="card-header"> |
|
|
|
<h6>客户端特定配置</h6> |
|
|
|
</div> |
|
|
|
<div class="card-body"> |
|
|
|
<div class="form-group"> |
|
|
|
<label>客户端名称:</label> |
|
|
|
<input type="text" class="form-control" id="clientName" placeholder="输入客户端名称"> |
|
|
|
</div> |
|
|
|
<div class="form-group"> |
|
|
|
<label>IP地址:</label> |
|
|
|
<input type="text" class="form-control" id="clientIp" placeholder="输入IP地址"> |
|
|
|
</div> |
|
|
|
<div class="form-group"> |
|
|
|
<label>配置选项:</label> |
|
|
|
<div class="form-check"> |
|
|
|
<input class="form-check-input" type="checkbox" id="clientSamples"> |
|
|
|
<label class="form-check-label" for="clientSamples">启用Samples</label> |
|
|
|
</div> |
|
|
|
<div class="form-check"> |
|
|
|
<input class="form-check-input" type="checkbox" id="clientRf"> |
|
|
|
<label class="form-check-label" for="clientRf">启用RF</label> |
|
|
|
</div> |
|
|
|
<div class="form-check"> |
|
|
|
<input class="form-check-input" type="checkbox" id="clientEnabled" checked> |
|
|
|
<label class="form-check-label" for="clientEnabled">启用配置</label> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="form-group"> |
|
|
|
<label>描述:</label> |
|
|
|
<input type="text" class="form-control" id="clientDescription" placeholder="配置描述"> |
|
|
|
</div> |
|
|
|
<button class="btn btn-primary btn-sm" onclick="loadClientConfig()">加载配置</button> |
|
|
|
<button class="btn btn-success btn-sm" onclick="saveClientConfig()">保存配置</button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="row mt-3"> |
|
|
|
<div class="col-12"> |
|
|
|
<h6>配置列表</h6> |
|
|
|
<button class="btn btn-info btn-sm mb-2" onclick="loadAllClientConfigs()">刷新配置列表</button> |
|
|
|
<div id="configList" class="table-responsive"> |
|
|
|
<table class="table table-striped table-sm"> |
|
|
|
<thead> |
|
|
|
<tr> |
|
|
|
<th>客户端名称</th> |
|
|
|
<th>IP地址</th> |
|
|
|
<th>Samples</th> |
|
|
|
<th>RF</th> |
|
|
|
<th>启用</th> |
|
|
|
<th>描述</th> |
|
|
|
<th>操作</th> |
|
|
|
</tr> |
|
|
|
</thead> |
|
|
|
<tbody id="configTableBody"> |
|
|
|
</tbody> |
|
|
|
</table> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
@section Scripts { |
|
|
@ -150,6 +252,10 @@ |
|
|
|
loadSummary(); |
|
|
|
loadAllStats(); |
|
|
|
startRefreshTimer(); |
|
|
|
|
|
|
|
// 新增的配置管理初始化 |
|
|
|
loadGlobalConfig(); |
|
|
|
loadAllClientConfigs(); |
|
|
|
}); |
|
|
|
|
|
|
|
// 加载统计摘要 |
|
|
@ -340,5 +446,151 @@ |
|
|
|
clearInterval(refreshTimer); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
// 统计配置管理相关函数 |
|
|
|
function loadGlobalConfig() { |
|
|
|
console.log('加载全局统计配置...'); |
|
|
|
$.get('/Statistics/GetGlobalStatisticsConfig', function(response) { |
|
|
|
if (response.success) { |
|
|
|
const config = response.data; |
|
|
|
document.getElementById('globalSamples').checked = config.defaultSamples; |
|
|
|
document.getElementById('globalRf').checked = config.defaultRf; |
|
|
|
console.log('全局配置已加载:', config); |
|
|
|
} else { |
|
|
|
console.error('加载全局配置失败:', response.message); |
|
|
|
} |
|
|
|
}).fail(function(xhr, status, error) { |
|
|
|
console.error('加载全局配置错误:', error); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
function saveGlobalConfig() { |
|
|
|
const config = { |
|
|
|
defaultSamples: document.getElementById('globalSamples').checked, |
|
|
|
defaultRf: document.getElementById('globalRf').checked, |
|
|
|
clientConfigs: [] |
|
|
|
}; |
|
|
|
|
|
|
|
console.log('保存全局统计配置...'); |
|
|
|
$.ajax({ |
|
|
|
url: '/Statistics/SetGlobalStatisticsConfig', |
|
|
|
type: 'POST', |
|
|
|
contentType: 'application/json', |
|
|
|
data: JSON.stringify(config), |
|
|
|
success: function(response) { |
|
|
|
console.log('全局配置保存响应:', response); |
|
|
|
if (response.success) { |
|
|
|
alert('全局配置已保存'); |
|
|
|
} else { |
|
|
|
alert('保存失败: ' + response.message); |
|
|
|
} |
|
|
|
}, |
|
|
|
error: function(xhr, status, error) { |
|
|
|
console.error('保存全局配置错误:', error); |
|
|
|
alert('保存失败: ' + error); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
function loadClientConfig() { |
|
|
|
const clientName = document.getElementById('clientName').value; |
|
|
|
if (!clientName) { |
|
|
|
alert('请输入客户端名称'); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
console.log('加载客户端统计配置:', clientName); |
|
|
|
$.get('/Statistics/GetClientStatisticsConfig', { clientName: clientName }, function(response) { |
|
|
|
if (response.success && response.data) { |
|
|
|
const config = response.data; |
|
|
|
document.getElementById('clientName').value = config.clientName; |
|
|
|
document.getElementById('clientIp').value = config.ipAddress; |
|
|
|
document.getElementById('clientSamples').checked = config.enableSamples; |
|
|
|
document.getElementById('clientRf').checked = config.enableRf; |
|
|
|
document.getElementById('clientEnabled').checked = config.isEnabled; |
|
|
|
document.getElementById('clientDescription').value = config.description; |
|
|
|
console.log('客户端配置已加载:', config); |
|
|
|
} else { |
|
|
|
console.log('客户端配置未找到或加载失败'); |
|
|
|
} |
|
|
|
}).fail(function(xhr, status, error) { |
|
|
|
console.error('加载客户端配置错误:', error); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
function saveClientConfig() { |
|
|
|
const config = { |
|
|
|
clientName: document.getElementById('clientName').value, |
|
|
|
ipAddress: document.getElementById('clientIp').value, |
|
|
|
enableSamples: document.getElementById('clientSamples').checked, |
|
|
|
enableRf: document.getElementById('clientRf').checked, |
|
|
|
isEnabled: document.getElementById('clientEnabled').checked, |
|
|
|
description: document.getElementById('clientDescription').value |
|
|
|
}; |
|
|
|
|
|
|
|
if (!config.clientName) { |
|
|
|
alert('请输入客户端名称'); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
console.log('保存客户端统计配置...'); |
|
|
|
$.ajax({ |
|
|
|
url: '/Statistics/SetClientStatisticsConfig', |
|
|
|
type: 'POST', |
|
|
|
contentType: 'application/json', |
|
|
|
data: JSON.stringify(config), |
|
|
|
success: function(response) { |
|
|
|
console.log('客户端配置保存响应:', response); |
|
|
|
if (response.success) { |
|
|
|
alert('客户端配置已保存'); |
|
|
|
loadAllClientConfigs(); // 刷新配置列表 |
|
|
|
} else { |
|
|
|
alert('保存失败: ' + response.message); |
|
|
|
} |
|
|
|
}, |
|
|
|
error: function(xhr, status, error) { |
|
|
|
console.error('保存客户端配置错误:', error); |
|
|
|
alert('保存失败: ' + error); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
function loadAllClientConfigs() { |
|
|
|
console.log('加载所有客户端配置...'); |
|
|
|
$.get('/Statistics/GetAllClientStatisticsConfigs', function(response) { |
|
|
|
if (response.success) { |
|
|
|
const configs = response.data; |
|
|
|
const tbody = document.getElementById('configTableBody'); |
|
|
|
tbody.innerHTML = ''; |
|
|
|
|
|
|
|
configs.forEach(function(config) { |
|
|
|
const row = document.createElement('tr'); |
|
|
|
row.innerHTML = ` |
|
|
|
<td>${config.clientName}</td> |
|
|
|
<td>${config.ipAddress}</td> |
|
|
|
<td>${config.enableSamples ? '是' : '否'}</td> |
|
|
|
<td>${config.enableRf ? '是' : '否'}</td> |
|
|
|
<td>${config.isEnabled ? '是' : '否'}</td> |
|
|
|
<td>${config.description}</td> |
|
|
|
<td> |
|
|
|
<button class="btn btn-sm btn-primary" onclick="editConfig('${config.clientName}')">编辑</button> |
|
|
|
</td> |
|
|
|
`; |
|
|
|
tbody.appendChild(row); |
|
|
|
}); |
|
|
|
|
|
|
|
console.log('配置列表已更新,共', configs.length, '个配置'); |
|
|
|
} else { |
|
|
|
console.error('加载配置列表失败:', response.message); |
|
|
|
} |
|
|
|
}).fail(function(xhr, status, error) { |
|
|
|
console.error('加载配置列表错误:', error); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
function editConfig(clientName) { |
|
|
|
document.getElementById('clientName').value = clientName; |
|
|
|
loadClientConfig(); |
|
|
|
} |
|
|
|
</script> |
|
|
|
} |