|
|
@ -3,6 +3,7 @@ |
|
|
|
var testConfig = ViewBag.TestConfig as LTEMvcApp.Models.ClientConfig; |
|
|
|
// 只保留不含 EVENT 的日志层 |
|
|
|
var allLayers = LTEMvcApp.Models.LogLayerTypes.AllLayers.Where(l => l != "EVENT").ToArray(); |
|
|
|
var allIMSLayers = LTEMvcApp.Models.LogLayerTypes.AllIMSLayers.Where(l => l != "EVENT").ToArray(); // 暂时使用AllLayers,后续可以扩展 |
|
|
|
var layerConfigs = testConfig?.Logs?.Layers ?? new Dictionary<string, LTEMvcApp.Models.LogLayerConfig>(); |
|
|
|
} |
|
|
|
|
|
|
@ -250,6 +251,14 @@ |
|
|
|
<input type="checkbox" class="form-check-input" id="readonly" name="readonly" @(testConfig?.Readonly == true ? "checked" : "")> |
|
|
|
<label class="form-check-label" for="readonly">只读模式</label> |
|
|
|
</div> |
|
|
|
<div class="form-check form-check-inline"> |
|
|
|
<input type="radio" class="form-check-input" id="mode_ran" name="mode" value="ran" @(testConfig?.Mode == "ran" ? "checked" : "checked")> |
|
|
|
<label class="form-check-label" for="mode_ran">RAN</label> |
|
|
|
</div> |
|
|
|
<div class="form-check form-check-inline"> |
|
|
|
<input type="radio" class="form-check-input" id="mode_ims" name="mode" value="ims" @(testConfig?.Mode == "ims" ? "checked" : "")> |
|
|
|
<label class="form-check-label" for="mode_ims">IMS</label> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
@ -271,52 +280,104 @@ |
|
|
|
<th>包含负载</th> |
|
|
|
</tr> |
|
|
|
</thead> |
|
|
|
<tbody> |
|
|
|
@foreach (var layer in allLayers) |
|
|
|
{ |
|
|
|
var config = layerConfigs[layer]; |
|
|
|
<tr> |
|
|
|
<td><strong>@layer</strong></td> |
|
|
|
<td> |
|
|
|
<select class="form-control form-control-sm" name="layers[@layer][filter]"> |
|
|
|
@foreach (var logLevel in LTEMvcApp.Models.LogLayerTypes.LogLevels) |
|
|
|
{ |
|
|
|
if (logLevel == config.Filter) |
|
|
|
<tbody id="layersTableBody"> |
|
|
|
<!-- RAN 模式下的日志层 --> |
|
|
|
<tbody id="ranLayers" class="mode-layers" style="display: block;"> |
|
|
|
@foreach (var layer in allLayers) |
|
|
|
{ |
|
|
|
var config = layerConfigs.ContainsKey(layer) ? layerConfigs[layer] : new LTEMvcApp.Models.LogLayerConfig(); |
|
|
|
<tr> |
|
|
|
<td><strong>@layer</strong></td> |
|
|
|
<td> |
|
|
|
<select class="form-control form-control-sm" name="layers[@layer][filter]"> |
|
|
|
@foreach (var logLevel in LTEMvcApp.Models.LogLayerTypes.LogLevels) |
|
|
|
{ |
|
|
|
<option value="@logLevel" selected>@logLevel.ToUpper()</option> |
|
|
|
if (logLevel == config.Filter) |
|
|
|
{ |
|
|
|
<option value="@logLevel" selected>@logLevel.ToUpper()</option> |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
<option value="@logLevel">@logLevel.ToUpper()</option> |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
</select> |
|
|
|
</td> |
|
|
|
<td> |
|
|
|
<select class="form-control form-control-sm" name="layers[@layer][level]"> |
|
|
|
@foreach (var logLevel in LTEMvcApp.Models.LogLayerTypes.LogLevels) |
|
|
|
{ |
|
|
|
<option value="@logLevel">@logLevel.ToUpper()</option> |
|
|
|
if (logLevel == config.Level) |
|
|
|
{ |
|
|
|
<option value="@logLevel" selected>@logLevel.ToUpper()</option> |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
<option value="@logLevel">@logLevel.ToUpper()</option> |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
</select> |
|
|
|
</td> |
|
|
|
<td> |
|
|
|
<select class="form-control form-control-sm" name="layers[@layer][level]"> |
|
|
|
@foreach (var logLevel in LTEMvcApp.Models.LogLayerTypes.LogLevels) |
|
|
|
{ |
|
|
|
if (logLevel == config.Level) |
|
|
|
</select> |
|
|
|
</td> |
|
|
|
<td> |
|
|
|
<input type="number" class="form-control form-control-sm" name="layers[@layer][max_size]" value="@config.MaxSize" min="1" max="1000"> |
|
|
|
</td> |
|
|
|
<td> |
|
|
|
<div class="form-check"> |
|
|
|
<input type="checkbox" class="form-check-input" name="layers[@layer][payload]" @(config.Payload ? "checked" : "")> |
|
|
|
</div> |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
} |
|
|
|
</tbody> |
|
|
|
|
|
|
|
<!-- IMS 模式下的日志层 --> |
|
|
|
<tbody id="imsLayers" class="mode-layers" style="display: none;"> |
|
|
|
@foreach (var layer in allIMSLayers) |
|
|
|
{ |
|
|
|
var config = layerConfigs.ContainsKey(layer) ? layerConfigs[layer] : new LTEMvcApp.Models.LogLayerConfig(); |
|
|
|
<tr> |
|
|
|
<td><strong>@layer</strong></td> |
|
|
|
<td> |
|
|
|
<select class="form-control form-control-sm" name="layers[@layer][filter]"> |
|
|
|
@foreach (var logLevel in LTEMvcApp.Models.LogLayerTypes.LogLevels) |
|
|
|
{ |
|
|
|
<option value="@logLevel" selected>@logLevel.ToUpper()</option> |
|
|
|
if (logLevel == config.Filter) |
|
|
|
{ |
|
|
|
<option value="@logLevel" selected>@logLevel.ToUpper()</option> |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
<option value="@logLevel">@logLevel.ToUpper()</option> |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
</select> |
|
|
|
</td> |
|
|
|
<td> |
|
|
|
<select class="form-control form-control-sm" name="layers[@layer][level]"> |
|
|
|
@foreach (var logLevel in LTEMvcApp.Models.LogLayerTypes.LogLevels) |
|
|
|
{ |
|
|
|
<option value="@logLevel">@logLevel.ToUpper()</option> |
|
|
|
if (logLevel == config.Level) |
|
|
|
{ |
|
|
|
<option value="@logLevel" selected>@logLevel.ToUpper()</option> |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
<option value="@logLevel">@logLevel.ToUpper()</option> |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
</select> |
|
|
|
</td> |
|
|
|
<td> |
|
|
|
<input type="number" class="form-control form-control-sm" name="layers[@layer][max_size]" value="@config.MaxSize" min="1" max="1000"> |
|
|
|
</td> |
|
|
|
<td> |
|
|
|
<div class="form-check"> |
|
|
|
<input type="checkbox" class="form-check-input" name="layers[@layer][payload]" @(config.Payload ? "checked" : "")> |
|
|
|
</div> |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
} |
|
|
|
</select> |
|
|
|
</td> |
|
|
|
<td> |
|
|
|
<input type="number" class="form-control form-control-sm" name="layers[@layer][max_size]" value="@config.MaxSize" min="1" max="1000"> |
|
|
|
</td> |
|
|
|
<td> |
|
|
|
<div class="form-check"> |
|
|
|
<input type="checkbox" class="form-check-input" name="layers[@layer][payload]" @(config.Payload ? "checked" : "")> |
|
|
|
</div> |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
} |
|
|
|
</tbody> |
|
|
|
</tbody> |
|
|
|
</table> |
|
|
|
</div> |
|
|
@ -357,6 +418,13 @@ |
|
|
|
e.preventDefault(); |
|
|
|
saveTestClientConfig(); |
|
|
|
}); |
|
|
|
|
|
|
|
// 监听模式切换 |
|
|
|
$('input[name="mode"]').on('change', function() { |
|
|
|
var selectedMode = $(this).val(); |
|
|
|
$('.mode-layers').hide(); |
|
|
|
$('#' + selectedMode + 'Layers').show(); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
function saveTestClientConfig() { |
|
|
@ -368,13 +436,16 @@ |
|
|
|
enabled: $('#enabled').is(':checked'), |
|
|
|
ssl: $('#ssl').is(':checked'), |
|
|
|
readonly: $('#readonly').is(':checked'), |
|
|
|
mode: $('input[name="mode"]:checked').val(), |
|
|
|
logs: { |
|
|
|
layers: {} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
// 构建日志层配置 |
|
|
|
var layers = @Html.Raw(System.Text.Json.JsonSerializer.Serialize(allLayers)); |
|
|
|
// 根据当前模式获取日志层 |
|
|
|
var selectedMode = $('input[name="mode"]:checked').val(); |
|
|
|
var layers = selectedMode === 'ims' ? @Html.Raw(System.Text.Json.JsonSerializer.Serialize(allIMSLayers)) : @Html.Raw(System.Text.Json.JsonSerializer.Serialize(allLayers)); |
|
|
|
|
|
|
|
layers.forEach(function(layer) { |
|
|
|
var level = $(`select[name="layers[${layer}][level]"]`).val(); |
|
|
|
var filter = $(`select[name="layers[${layer}][filter]"]`).val(); |
|
|
|