Artrajz's picture
init
1c9751a
$(document).ready(function () {
$.ajax({
url: '/admin/get_config',
type: 'POST',
dataType: 'json',
contentType: 'application/json',
headers: {
'X-CSRFToken': $('meta[name="csrf-token"]').attr('content')
},
success: function (response) {
show_config(response);
},
error: function (response) {
}
});
$(".config-save").click(function () {
set_config();
});
}
);
function show_config(configData) {
$.each(configData.vits_config, function (key, value) {
var formattedKey = key.replace(/_/g, '-');
//为了避免id冲突,组合key作为id
var itemId = 'vits-config-' + formattedKey;
$('#vits-config').append(`
<div class="input-group mb-3 item">
<span class="input-group-text">${key}</span>
<input type="text" class="form-control" id="${itemId}" value="${value}">
</div>
`);
})
$.each(configData.w2v2_vits_config, function (key, value) {
var formattedKey = key.replace(/_/g, '-');
var itemId = 'w2v2-vits-config-' + formattedKey;
$('#w2v2-vits-config').append(`
<div class="input-group mb-3 item">
<span class="input-group-text">${key}</span>
<input type="text" class="form-control" id="${itemId}" value="${value}">
</div>
`);
})
$.each(configData.hubert_vits_config, function (key, value) {
var formattedKey = key.replace(/_/g, '-');
var itemId = 'hubert-vits-config-' + formattedKey;
$('#hubert-vits-config').append(`
<div class="input-group mb-3 item">
<span class="input-group-text">${key}</span>
<input type="text" class="form-control" id="${itemId}" value="${value}">
</div>
`);
})
$.each(configData.bert_vits2_config, function (key, value) {
var formattedKey = key.replace(/_/g, '-');
var itemId = 'bert-vits2-config-' + formattedKey;
$('#bert-vits2-config').append(`
<div class="input-group mb-3 item">
<span class="input-group-text">${key}</span>
<input type="text" class="form-control" id="${itemId}" value="${value}">
</div>
`);
})
$.each(configData.log_config, function (key, value) {
var formattedKey = key.replace(/_/g, '-');
if (key != 'logging_level') {
$('#log-config').append(`
<div class="input-group mb-3 item">
<span class="input-group-text">${key}</span>
<input type="text" class="form-control" id="${formattedKey}" value="${value}">
</div>
`);
}
});
$.each(configData.model_config, function (key, value) {
var formattedKey = key.replace(/_/g, '-');
$('#model-config').append(`
<div class="input-group mb-3 item">
<span class="input-group-text">${key}</span>
<input type="text" class="form-control" id="${formattedKey}" value="${value}">
</div>
`);
});
$.each(configData.language_identification, function (key, value) {
var formattedKey = key.replace(/_/g, '-');
$('#language-identification ' + '#' + formattedKey).val(value)
});
$.each(configData.http_service, function (key, value) {
var formattedKey = key.replace(/_/g, '-');
if (formattedKey == 'api-key-enable' || formattedKey == 'debug') {
$('#' + formattedKey).prop('checked', value);
} else {
$('#' + formattedKey).val(value);
}
});
$.each(configData.system, function (key, value) {
var formattedKey = key.replace(/_/g, '-');
if (formattedKey == 'api-key-enabled' || formattedKey == 'cache-audio') {
$('#' + formattedKey).prop('checked', value);
} else {
$('#' + formattedKey).val(value);
}
});
$.each(configData.admin, function (key, value) {
$('#' + key).val(value);
});
}
function set_config() {
var configData = {}
$('.configuration .form-label').each(function () {
var labelId = $(this).next().attr('id');
var nestedDict = {};
$('#' + labelId).find('.item').each(function () {
var itemId = $(this).find('input, select').attr('id').replace(/-/g, '_');
//还原组合key
itemId = itemId.replace(labelId.replace(/-/g, '_') + "_", "");
if ($(this).find('input').is(':checkbox')) {
// 如果是复选框,获取复选框的状态
itemValue = $(this).find('input').prop('checked');
} else {
// 如果不是复选框,获取输入框或选择框的值
itemValue = $(this).find('input, select').val();
}
nestedDict[itemId] = itemValue;
if (labelId == "system")
console.log(itemId)
});
configData[labelId.replace(/-/g, '_')] = nestedDict;
});
$.ajax({
type: "POST",
url: "/admin/set_config",
data: JSON.stringify(configData), // 将配置数据转换为JSON字符串
contentType: "application/json",
headers: {
'X-CSRFToken': $('meta[name="csrf-token"]').attr('content')
},
success: function (response) {
alert("配置已保存");
location.reload();
},
error: function (error) {
alert("保存配置时出错,请查看日志!");
}
});
return configData
}