mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-07-18 01:12:21 +00:00
add a confirmation interface to let user to commit changes into local tree or not commit after generated source codes in config app. Tracked-On: #3834 Signed-off-by: Shuang Zheng <shuang.zheng@intel.com> Reviewed-by: Victor Sun <victor.sun@intel.com>
613 lines
23 KiB
JavaScript
613 lines
23 KiB
JavaScript
$().ready(function(){
|
|
$("#board_info_file").change(function () {
|
|
var fileObj = $(this)[0].files[0];
|
|
if (typeof (fileObj) == "undefined" || fileObj.size <= 0) {
|
|
alert("Upload error.");
|
|
return;
|
|
}
|
|
var file_name = $(this).val();
|
|
var formFile = new FormData();
|
|
formFile.append("name", file_name);
|
|
formFile.append("file", fileObj);
|
|
|
|
|
|
$.ajax({
|
|
url: "../upload_board_info",
|
|
data: formFile,
|
|
type: "Post",
|
|
dataType: "json",
|
|
cache: false,
|
|
processData: false,
|
|
contentType: false,
|
|
success: function (result) {
|
|
console.log(result);
|
|
if (result.status == 'success') {
|
|
if (result.info != 'updated') {
|
|
alert('Upload successfully.\nA new board type: '+result.info+' created.');
|
|
} else {
|
|
alert('Upload successfully.');
|
|
}
|
|
} else {
|
|
alert(result.status);
|
|
}
|
|
|
|
window.location.reload();
|
|
},
|
|
error: function(e){
|
|
console.log(e.status);
|
|
console.log(e.responseText);
|
|
alert(e.status+'\n'+e.responseText);
|
|
}
|
|
})
|
|
});
|
|
|
|
$("#scenario_file").change(function () {
|
|
var fileObj = $(this)[0].files[0];
|
|
if (typeof (fileObj) == "undefined" || fileObj.size <= 0) {
|
|
alert("Upload error.");
|
|
return;
|
|
}
|
|
var file_name = $(this).val();
|
|
|
|
var formFile = new FormData();
|
|
formFile.append("name", file_name);
|
|
formFile.append("file", fileObj);
|
|
|
|
$.ajax({
|
|
url: "../upload_scenario",
|
|
data: formFile,
|
|
type: "Post",
|
|
dataType: "json",
|
|
cache: false,
|
|
processData: false,
|
|
contentType: false,
|
|
success: function (result) {
|
|
console.log(result);
|
|
status = result.status;
|
|
if (status!='success') {
|
|
alert(status);
|
|
return;
|
|
}
|
|
error_list = result.error_list;
|
|
file_name = result.file_name;
|
|
rename = result.rename
|
|
if(result.rename==true) {
|
|
alert('Scenario setting existed, import successfully with a new name: '+file_name);
|
|
} else {
|
|
alert('Scenario setting import successfully with name: '+file_name);
|
|
}
|
|
window.location = 'http://'
|
|
+ window.location.host+"/scenario/user_defined_" + file_name;
|
|
},
|
|
error: function(e){
|
|
console.log(e.status);
|
|
console.log(e.responseText);
|
|
alert(e.status+'\n'+e.responseText);
|
|
}
|
|
})
|
|
});
|
|
|
|
$("#launch_file").change(function () {
|
|
var fileObj = $(this)[0].files[0];
|
|
if (typeof (fileObj) == "undefined" || fileObj.size <= 0) {
|
|
alert("Upload error.");
|
|
return;
|
|
}
|
|
var file_name = $(this).val();
|
|
|
|
var formFile = new FormData();
|
|
formFile.append("name", file_name);
|
|
formFile.append("file", fileObj);
|
|
|
|
$.ajax({
|
|
url: "../upload_launch",
|
|
data: formFile,
|
|
type: "Post",
|
|
dataType: "json",
|
|
cache: false,
|
|
processData: false,
|
|
contentType: false,
|
|
success: function (result) {
|
|
console.log(result);
|
|
status = result.status;
|
|
if (status!='success') {
|
|
alert(status);
|
|
return;
|
|
}
|
|
error_list = result.error_list;
|
|
file_name = result.file_name;
|
|
rename = result.rename
|
|
if(result.rename==true) {
|
|
alert('Launch setting existed, import successfully with a new name: '+file_name);
|
|
} else {
|
|
alert('Launch setting import successfully with name: '+file_name);
|
|
}
|
|
window.location = 'http://'
|
|
+ window.location.host+"/launch/user_defined_" + file_name;
|
|
},
|
|
error: function(e){
|
|
console.log(e.status);
|
|
console.log(e.responseText);
|
|
alert(e.status+'\n'+e.responseText);
|
|
}
|
|
})
|
|
});
|
|
|
|
$("select#board_info").change(function(){
|
|
data = {board_info: $(this).val()};
|
|
$.ajax({
|
|
type : "POST",
|
|
contentType: "application/json;charset=UTF-8",
|
|
url : "../select_board",
|
|
data : JSON.stringify(data),
|
|
success : function(result) {
|
|
console.log(result);
|
|
window.location.reload(true);
|
|
},
|
|
error : function(e){
|
|
console.log(e.status);
|
|
console.log(e.responseText);
|
|
}
|
|
});
|
|
});
|
|
|
|
$("input").on('blur',function(){
|
|
$(this).parents(".form-group").removeClass("has-error");
|
|
$(this).parents(".form-group").children("p").text("");
|
|
});
|
|
|
|
$("select").on('changed.bs.select',function(){
|
|
$(this).parents(".form-group").removeClass("has-error");
|
|
$(this).parents(".form-group").children("p").text("");
|
|
})
|
|
|
|
$('#save_board').on('click', function() {
|
|
save_board();
|
|
});
|
|
|
|
$('#save_scenario').on('click', function() {
|
|
var name = $(this).data('id');
|
|
if(name=="generate_board_src" || name=="generate_scenario_src") {
|
|
save_scenario(name);
|
|
}
|
|
else {
|
|
save_scenario();
|
|
}
|
|
});
|
|
|
|
$('#remove_scenario').on('click', function() {
|
|
old_scenario_name = $("#old_scenario_name").text();
|
|
if(old_scenario_name.indexOf('user_defined')<0) {
|
|
alert("Default scenario setting could not be deleted.");
|
|
return;
|
|
}
|
|
|
|
var board_info = $("select#board_info").val();
|
|
if (board_info==null || board_info=='') {
|
|
alert("Please select one board info before this operation.");
|
|
return;
|
|
}
|
|
|
|
scenario_config = {
|
|
old_setting_name: $("#old_scenario_name").text(),
|
|
new_setting_name: $("#new_scenario_name").val()
|
|
}
|
|
|
|
$.ajax({
|
|
type : "POST",
|
|
contentType: "application/json;charset=UTF-8",
|
|
url : "../remove_setting",
|
|
data : JSON.stringify(scenario_config),
|
|
success : function(result) {
|
|
console.log(result);
|
|
status = result.status
|
|
info = result.info
|
|
if (status == 'success') {
|
|
alert('Remove current scenario setting from acrn-config app successfully.');
|
|
window.location = window.location = 'http://'
|
|
+ window.location.host+"/scenario";
|
|
} else {
|
|
alert('Remove current scenario setting from acrn-config app failed:\n'+info);
|
|
}
|
|
},
|
|
error : function(e){
|
|
console.log(e.status);
|
|
console.log(e.responseText);
|
|
alert(e.status+'\n'+e.responseText);
|
|
}
|
|
});
|
|
});
|
|
|
|
$('#save_launch').on('click', function() {
|
|
var name = $(this).data('id');
|
|
if(name=="generate_launch_script") {
|
|
save_launch(name);
|
|
}
|
|
else {
|
|
save_launch();
|
|
}
|
|
});
|
|
|
|
$('#remove_launch').on('click', function() {
|
|
old_launch_name = $("#old_launch_name").text();
|
|
if(old_launch_name.indexOf('user_defined')<0) {
|
|
alert("Default launch setting could not be deleted.");
|
|
return;
|
|
}
|
|
|
|
var board_info = $("select#board_info").val();
|
|
if (board_info==null || board_info=='') {
|
|
alert("Please select one board before this operation.");
|
|
return;
|
|
}
|
|
|
|
launch_config = {
|
|
old_setting_name: $("#old_launch_name").text(),
|
|
new_setting_name: $("#new_launch_name").val(),
|
|
}
|
|
|
|
$.ajax({
|
|
type : "POST",
|
|
contentType: "application/json;charset=UTF-8",
|
|
url : "../remove_setting",
|
|
data : JSON.stringify(launch_config),
|
|
success : function(result) {
|
|
console.log(result);
|
|
status = result.status
|
|
info = result.info
|
|
if (status == 'success') {
|
|
alert('Remove current launch setting from acrn-config app successfully.');
|
|
window.location = window.location = 'http://'
|
|
+ window.location.host+"/launch";
|
|
} else {
|
|
alert('Remove current launch setting from acrn-config app failed:\n'+info);
|
|
}
|
|
},
|
|
error : function(e){
|
|
console.log(e.status);
|
|
console.log(e.responseText);
|
|
alert(e.status+'\n'+e.responseText);
|
|
}
|
|
});
|
|
});
|
|
|
|
$('#generate_board_src').on('click', function() {
|
|
var dataId = $(this).data('id');
|
|
$("#save_scenario").data('id', dataId);
|
|
});
|
|
|
|
$('#generate_scenario_src').on('click', function() {
|
|
var dataId = $(this).data('id');
|
|
$("#save_scenario").data('id', dataId);
|
|
});
|
|
|
|
$('#generate_launch_script').on('click', function() {
|
|
var dataId = $(this).data('id');
|
|
$("#save_launch").data('id', dataId);
|
|
});
|
|
|
|
$("select[ID$='vuart:id=1,base']").change(function(){
|
|
|
|
var id = $(this).attr('id');
|
|
var value = $(this).val();
|
|
show_com_target(id, value);
|
|
});
|
|
|
|
$("select[ID$='vuart:id=1,base']").each(function(index, item) {
|
|
var id = $(item).attr('id');
|
|
var value = $(item).val();
|
|
show_com_target(id, value);
|
|
})
|
|
|
|
$(document).on('click', "button:contains('+')", function() {
|
|
if($(this).text() != '+')
|
|
return;
|
|
var add_vcpu_id = $(this).attr('id');
|
|
var id = add_vcpu_id.replace('add_vcpu_', '');
|
|
var config_item = $(this).parent().parent();
|
|
var config_item_added = config_item.clone();
|
|
var id_added = (parseInt(id)+1).toString();
|
|
config_item_added.find("button:contains('+')").attr('id', 'add_vcpu_'+id_added);
|
|
config_item_added.find("button:contains('-')").attr('id', 'remove_vcpu_'+id_added);
|
|
config_item_added.find("button:contains('-')").prop("disabled", false);
|
|
config_item_added.find("label:first").text("");
|
|
config_item_added.find('.bootstrap-select').replaceWith(function() { return $('select', this); });
|
|
config_item_added.find('.selectpicker').selectpicker('render');
|
|
config_item_added.insertAfter(config_item);
|
|
});
|
|
|
|
$(document).on('click', "button:contains('-')", function() {
|
|
if($(this).text() != '-')
|
|
return;
|
|
var config_item = $(this).parent().parent();
|
|
config_item.remove();
|
|
});
|
|
|
|
})
|
|
|
|
|
|
function show_com_target(id, value) {
|
|
|
|
if(id==null || id=='undefined') {
|
|
return
|
|
}
|
|
var id2 = id.replace('base', 'target_vm_id');
|
|
var jquerySpecialChars = ["~", "`", "@", "#", "%", "&", "=", "'", "\"",
|
|
":", ";", "<", ">", ",", "/"];
|
|
for (var i = 0; i < jquerySpecialChars.length; i++) {
|
|
id2 = id2.replace(new RegExp(jquerySpecialChars[i],
|
|
"g"), "\\" + jquerySpecialChars[i]);
|
|
}
|
|
if (value == 'INVALID_COM_BASE') {
|
|
$('#'+id2+'_label1').hide();
|
|
$('#'+id2+'_label2').hide();
|
|
$('#'+id2+'_config').hide();
|
|
$('#'+id2+'_err').hide();
|
|
}
|
|
else {
|
|
$('#'+id2+'_label1').show();
|
|
$('#'+id2+'_label2').show();
|
|
$('#'+id2+'_config').show();
|
|
$('#'+id2+'_err').show();
|
|
}
|
|
}
|
|
|
|
|
|
function save_scenario(generator=null){
|
|
var board_info = $("text#board_type").text();
|
|
if (board_info==null || board_info=='') {
|
|
alert("Please select one board info before this operation.");
|
|
return;
|
|
}
|
|
|
|
scenario_config = {
|
|
old_scenario_name: $("#old_scenario_name").text(),
|
|
new_scenario_name: $("#new_scenario_name").val()
|
|
}
|
|
|
|
$("input").each(function(){
|
|
var id = $(this).attr('id');
|
|
var value = $(this).val();
|
|
if(id!='new_scenario_name' && id!='board_info_file'
|
|
&& id!='board_info_upload' && id!="scenario_file") {
|
|
scenario_config[id] = value;
|
|
}
|
|
})
|
|
|
|
$("textarea").each(function(){
|
|
var id = $(this).attr('id');
|
|
var value = $(this).val();
|
|
if(id!='new_scenario_name' && id!='board_info_file'
|
|
&& id!='board_info_upload' && id!="scenario_file") {
|
|
scenario_config[id] = value;
|
|
}
|
|
})
|
|
|
|
$("select").each(function(){
|
|
var id = $(this).attr('id');
|
|
var value = $(this).val();
|
|
if(id.indexOf('pcpu_id')>=0) {
|
|
if(id in scenario_config) {
|
|
scenario_config[id].push(value);
|
|
} else {
|
|
scenario_config[id] = [value];
|
|
}
|
|
} else if(id!='board_info') {
|
|
scenario_config[id] = value;
|
|
}
|
|
})
|
|
|
|
$.ajax({
|
|
type : "POST",
|
|
contentType: "application/json;charset=UTF-8",
|
|
url : "../save_scenario",
|
|
data : JSON.stringify(scenario_config),
|
|
success : function(result) {
|
|
error_list = result.error_list;
|
|
status = result.status;
|
|
var no_err = true;
|
|
$.each(error_list, function(index,item){
|
|
no_err = false;
|
|
var jquerySpecialChars = ["~", "`", "@", "#", "%", "&", "=", "'", "\"",
|
|
":", ";", "<", ">", ",", "/"];
|
|
for (var i = 0; i < jquerySpecialChars.length; i++) {
|
|
index = index.replace(new RegExp(jquerySpecialChars[i],
|
|
"g"), "\\" + jquerySpecialChars[i]);
|
|
}
|
|
$("#"+index).parents(".form-group").addClass("has-error");
|
|
$("#"+index+"_err").text(item);
|
|
})
|
|
if(no_err == true && status == 'success') {
|
|
file_name = result.file_name;
|
|
validate_message = 'Scenario setting saved successfully with name: '
|
|
+file_name+'\ninto acrn-hypervisor/misc/acrn-config/xmls/config-xmls/'+board_info+'/user_defined/.'
|
|
if(result.rename==true) {
|
|
validate_message = 'Scenario setting existed, saved successfully with a new name: '
|
|
+file_name+'\ninto acrn-hypervisor/misc/acrn-config/xmls/config-xmls/'+board_info+'/user_defined/.';
|
|
}
|
|
if(generator != null) {
|
|
commit_confirm_message = validate_message+'\n\nGenerate source codes from scenario setting.'
|
|
+'\n\nDo you want to commit changes to local tree?'
|
|
commit_confirm = 'no'
|
|
if(confirm(commit_confirm_message)) {
|
|
commit_confirm = 'yes'
|
|
}
|
|
generator_config = {
|
|
type: generator,
|
|
board_info: $("select#board_info").val(),
|
|
board_setting: "board_setting",
|
|
scenario_setting: file_name,
|
|
commit: commit_confirm
|
|
}
|
|
$.ajax({
|
|
type : "POST",
|
|
contentType: "application/json;charset=UTF-8",
|
|
url : "../generate_src",
|
|
data : JSON.stringify(generator_config),
|
|
success : function(result) {
|
|
console.log(result);
|
|
status = result.status
|
|
error_list = result.error_list
|
|
if (status == 'success' && (JSON.stringify(error_list)=='{}' || JSON.stringify(error_list)=='null')) {
|
|
if(commit_confirm == 'yes')
|
|
alert(generator+' with commit successfully.');
|
|
else
|
|
alert(generator+' successfully.');
|
|
} else {
|
|
alert(generator+' failed. \nError list:\n'+JSON.stringify(error_list));
|
|
}
|
|
window.location = "./user_defined_" + file_name;
|
|
},
|
|
error : function(e){
|
|
console.log(e.status);
|
|
console.log(e.responseText);
|
|
alert(e.status+'\n'+e.responseText);
|
|
}
|
|
});
|
|
} else {
|
|
alert(validate_message);
|
|
window.location = "./user_defined_" + file_name;
|
|
}
|
|
}
|
|
else if(status != 'success') {
|
|
alert(JSON.stringify(error_list));
|
|
}
|
|
},
|
|
error : function(e){
|
|
console.log(e.status);
|
|
console.log(e.responseText);
|
|
alert(e.status+'\n'+e.responseText);
|
|
}
|
|
});
|
|
}
|
|
|
|
function save_launch(generator=null) {
|
|
var board_info = $("text#board_type").text();
|
|
var scenario_name = $("select#scenario_name").val();
|
|
if (board_info==null || board_info=='' || scenario_name==null || scenario_name=='') {
|
|
alert("Please select one board and scenario before this operation.");
|
|
return;
|
|
}
|
|
|
|
launch_config = {
|
|
old_launch_name: $("#old_launch_name").text(),
|
|
new_launch_name: $("#new_launch_name").val(),
|
|
scenario_name: scenario_name
|
|
}
|
|
|
|
$("input").each(function(){
|
|
var id = $(this).attr('id');
|
|
var value = $(this).val();
|
|
if(id!='new_launch_name' && id!='board_info_file'
|
|
&& id!='board_info_upload' && id!='scenario_name'
|
|
&& id!="launch_file") {
|
|
launch_config[id] = value;
|
|
}
|
|
})
|
|
|
|
$("select").each(function(){
|
|
var id = $(this).attr('id');
|
|
var value = $(this).val();
|
|
if(id!='board_info') {
|
|
launch_config[id] = value;
|
|
}
|
|
})
|
|
|
|
$("textarea").each(function(){
|
|
var id = $(this).attr('id');
|
|
var value = $(this).val();
|
|
if(id!='new_scenario_name' && id!='board_info_file'
|
|
&& id!='board_info_upload' && id!="scenario_file") {
|
|
launch_config[id] = value;
|
|
}
|
|
})
|
|
|
|
$.ajax({
|
|
type : "POST",
|
|
contentType: "application/json;charset=UTF-8",
|
|
url : "../save_launch",
|
|
data : JSON.stringify(launch_config),
|
|
success : function(result) {
|
|
console.log(result);
|
|
error_list = result.error_list;
|
|
status = result.status;
|
|
|
|
var no_err = true;
|
|
$.each(error_list, function(index,item){
|
|
no_err = false;
|
|
var jquerySpecialChars = ["~", "`", "@", "#", "%", "&", "=", "'", "\"",
|
|
":", ";", "<", ">", ",", "/"];
|
|
for (var i = 0; i < jquerySpecialChars.length; i++) {
|
|
index = index.replace(new RegExp(jquerySpecialChars[i],
|
|
"g"), "\\" + jquerySpecialChars[i]);
|
|
}
|
|
$("#"+index).parents(".form-group").addClass("has-error");
|
|
$("#"+index+"_err").text(item);
|
|
})
|
|
if(no_err == true && status == 'success') {
|
|
file_name = result.file_name;
|
|
validate_message = 'Launch setting saved successfully with name: '
|
|
+file_name+'\nto acrn-hypervisor/misc/acrn-config/xmls/config-xmls/'+board_info+'/user_defined/.'
|
|
if(result.rename==true) {
|
|
validate_message = 'Launch setting existed, saved successfully with a new name: '
|
|
+file_name+'\nto acrn-hypervisor/misc/acrn-config/xmls/config-xmls/'+board_info+'/user_defined/.';
|
|
}
|
|
if(generator != null) {
|
|
commit_confirm_message = validate_message+'\n\nGenerate launch scripts from launch setting.'
|
|
+'\n\nDo you want to commit changes to local tree?'
|
|
commit_confirm = 'no'
|
|
if(confirm(commit_confirm_message)) {
|
|
commit_confirm = 'yes'
|
|
}
|
|
generator_config = {
|
|
type: generator,
|
|
board_info: $("select#board_info").val(),
|
|
board_setting: "board_setting",
|
|
scenario_setting: $("select#scenario_name").val(),
|
|
launch_setting: file_name,
|
|
commit: commit_confirm
|
|
}
|
|
$.ajax({
|
|
type : "POST",
|
|
contentType: "application/json;charset=UTF-8",
|
|
url : "../generate_src",
|
|
data : JSON.stringify(generator_config),
|
|
success : function(result) {
|
|
console.log(result);
|
|
status = result.status
|
|
error_list = result.error_list
|
|
if (status == 'success' && (JSON.stringify(error_list)=='{}' || JSON.stringify(error_list)=='null')) {
|
|
if(commit_confirm == 'yes')
|
|
alert(generator+' successfully into '+
|
|
'acrn-hypervisor/misc/acrn-config/xmls/config-xmls/'+board_info+'/output/ with changes committed.');
|
|
else
|
|
alert(generator+' successfully into '+
|
|
'acrn-hypervisor/misc/acrn-config/xmls/config-xmls/'+board_info+'/output/.');
|
|
} else {
|
|
alert(generator+' failed. \nError list:\n'+JSON.stringify(error_list));
|
|
}
|
|
window.location = "./user_defined_" + file_name;
|
|
},
|
|
error : function(e){
|
|
console.log(e.status);
|
|
console.log(e.responseText);
|
|
alert(e.status+'\n'+e.responseText);
|
|
}
|
|
});
|
|
} else {
|
|
alert(validate_message);
|
|
window.location = "./user_defined_" + file_name;
|
|
}
|
|
}
|
|
else if(status != 'success') {
|
|
alert(JSON.stringify(error_list));
|
|
}
|
|
},
|
|
error : function(e){
|
|
console.log(e.status);
|
|
console.log(e.responseText);
|
|
alert(e.status+'\n'+e.responseText);
|
|
}
|
|
});
|
|
}
|