feat: init; from commit c3adcb2e6bc94b46f4f34c03bc62abcce6c7e1a0 of BDContract
This commit is contained in:
315
js/timeTravel.js
Normal file
315
js/timeTravel.js
Normal file
@@ -0,0 +1,315 @@
|
||||
/*
|
||||
* Global.contractID
|
||||
* Global.memoryFiles
|
||||
* Global.currentFile
|
||||
* Global.currentNode
|
||||
* Global.nodes
|
||||
*/
|
||||
|
||||
var initContracts = function(){
|
||||
$.ajax({
|
||||
url : "./CMManager?action=listContractProcess",
|
||||
dataType : "json"
|
||||
}).done(function(result) {
|
||||
// console.log(result);
|
||||
Global.result = result;
|
||||
listNodes();
|
||||
updateTabs(JSON.parse(result.data));
|
||||
});
|
||||
}
|
||||
|
||||
var updateTabs = function(data) {
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
var obj = data[i];
|
||||
$("#contracts").editableSelect('add', obj.name);
|
||||
}
|
||||
if (data.length > 0)
|
||||
$("#contracts").editableSelect()[0].value = data[0].name;
|
||||
Global.contractID = $("#contracts")[0].value;
|
||||
updateContract();
|
||||
clickContract();
|
||||
};
|
||||
|
||||
var clickContract = function() {
|
||||
var contractID = $("#contracts")[0].value;
|
||||
if (contractID != Global.contractID) {
|
||||
Global.contractID = contractID;
|
||||
updateContract();
|
||||
}
|
||||
}
|
||||
|
||||
var switchMemoryFile = function(i) {
|
||||
Global.currentFile = Global.memoryFiles[i]; //设置当前选中的文件,currentFile为文件名
|
||||
$("#notice").html("Choose time " + Global.currentFile + " to travel.");
|
||||
|
||||
for(var j = 0;j < Global.memoryFiles.length;j++){
|
||||
if(j == i){
|
||||
document.getElementById("memoryFile" + j).style.color="#a9423e"; //改变选中文件颜色
|
||||
}
|
||||
else{
|
||||
document.getElementById("memoryFile" + j).style.color="black";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var updateContract = function() {
|
||||
var name = Global.contractID;
|
||||
$("#show").html("Contract " + name + " has been choosed.");
|
||||
listMemoryFiles(); //更新选择的合约需更新memoryFiles
|
||||
}
|
||||
|
||||
var updateMemoryFiles = function(data) {
|
||||
Global.memoryFiles = data; //首次设置当前Global.memoryFiles值
|
||||
var html = "<label><b>Time to Choose</b></label>";
|
||||
for(var i = 0;i < data.length;i++){
|
||||
html += "<h4 onclick=\"switchMemoryFile(" + i + ")\" class='projectButton' id=\"memoryFile" + i + "\"> " + data[i] + "</h4>";
|
||||
}
|
||||
$("#memoryFilesArea").html(html);
|
||||
printTimeTravelLog();
|
||||
}
|
||||
|
||||
var listMemoryFiles = function() {
|
||||
console.log("listMemoryFiles : ");
|
||||
$.ajax({
|
||||
url : "./CMManager?action=listMemoryFiles&target=" + Global.contractID,
|
||||
dataType : "json"
|
||||
}).done(function(result) {
|
||||
Global.result = result;
|
||||
// console.log("[listMemoryFiles] result.data = " + result.data);
|
||||
if(result.data == "" || result.data == null){
|
||||
$("#memoryFilesArea").html("<label><b>Time to Choose</b></label></br><h4>This contract has no memory files,can't travel!</h4>");
|
||||
}else if(result.data == "all"){
|
||||
$("#memoryFilesArea").html("<label><b>Time to Choose</b></label></br><h4>Please choose a contract first!</h4>");
|
||||
}else{
|
||||
updateMemoryFiles(JSON.parse(result.data));
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
var dumpContract = function() {
|
||||
$.ajax({
|
||||
url : "./CMManager?action=dumpContract&contractID=" + Global.contractID + "&target=" + Global.contractID,
|
||||
dataType : "json"
|
||||
}).done(function(result) {
|
||||
// console.log("dumpContract result : " + result);
|
||||
Global.result = result;
|
||||
if(result.data == "success"){
|
||||
$("#notice").html("Contract " + Global.contractID + " has been dumped successfully.Meomry file size is " + result.size + " . Dump time is " + result.time + ".");
|
||||
printTimeTravelLog();
|
||||
listMemoryFiles(); //产生新的memory文件,需要刷新
|
||||
}
|
||||
else{
|
||||
$("#notice").html("Contract " + Global.contractID + " dumped failed!");
|
||||
printTimeTravelLog();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
var backtoContract = function() {
|
||||
// console.log("Global.currentFile=" + Global.currentFile);
|
||||
if(Global.currentFile == null){
|
||||
alert("Please choose time to travel!");
|
||||
$("#notice").html("Please choose time to travel!");
|
||||
return;
|
||||
}
|
||||
$.ajax({
|
||||
url : "./CMManager?action=loadMemory&contractID=" + Global.contractID + "&target=" + Global.currentFile + "&direction=back",
|
||||
dataType : "json"
|
||||
}).done(function(result) {
|
||||
Global.result = result;
|
||||
if(result.data == "success"){
|
||||
$("#notice").html("Contract " + Global.contractID + " has travelled back to past successfully.Meomry file size is " + result.size + " . Travel time is " + result.time + ".");
|
||||
printTimeTravelLog();
|
||||
}
|
||||
else{
|
||||
alert(result.data);
|
||||
$("#notice").html(result.data);
|
||||
printTimeTravelLog();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
var gotoContract = function() {
|
||||
// ("Global.currentFile=" + Global.currentFile);
|
||||
if(Global.currentFile == null){
|
||||
alert("Please choose time to travel!");
|
||||
$("#notice").html("Please choose time to travel!");
|
||||
return;
|
||||
}
|
||||
$.ajax({
|
||||
url : "./CMManager?action=loadMemory&contractID=" + Global.contractID + "&target=" + Global.currentFile + "&direction=go",
|
||||
dataType : "json"
|
||||
}).done(function(result) {
|
||||
Global.result = result;
|
||||
if(result.data == "success"){
|
||||
$("#notice").html("Contract " + Global.contractID + " has travelled to future successfully. Meomry file size is " + result.size + " . Travel time is " + result.time + ".");
|
||||
printTimeTravelLog();
|
||||
}
|
||||
else{
|
||||
alert(result.data);
|
||||
$("#notice").html(result.data);
|
||||
printTimeTravelLog();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
var printTimeTravelLog = function() {
|
||||
$.ajax({
|
||||
url : "./CMManager?action=printTimeTravelLog",
|
||||
dataType : "json"
|
||||
}).done(function(result) {
|
||||
Global.result = result;
|
||||
$("#log").html(result.data);
|
||||
});
|
||||
}
|
||||
|
||||
var printTransferLog = function() {
|
||||
$.ajax({
|
||||
url : "./CMManager?action=printTransferLog",
|
||||
dataType : "json"
|
||||
}).done(function(result) {
|
||||
Global.result = result;
|
||||
$("#log2").html(result.data);
|
||||
});
|
||||
}
|
||||
|
||||
var listNodes = function() {
|
||||
console.log("listNodes : ");
|
||||
$.ajax({
|
||||
url : "./CMManager?action=listForkNodes",
|
||||
dataType : "json"
|
||||
}).done(function(result) {
|
||||
Global.result = result;
|
||||
console.log("[listNodes] result.data = " + result.data);
|
||||
if(result.data == "" || result.data == null){
|
||||
$("#nodesArea").html("<label><b>No node to choose!!!</b></label></br>");
|
||||
}else{
|
||||
updateNodes(JSON.parse(result.data));
|
||||
}
|
||||
|
||||
printTransferLog();
|
||||
});
|
||||
}
|
||||
|
||||
var updateNodes = function(data) {
|
||||
console.log("updateNodes : " + data);
|
||||
Global.nodes = data;
|
||||
var html = "<label><b>Nodes to Choose</b></label>";
|
||||
for(var i = 0;i < data.length;i++){
|
||||
html += "<h4 onclick=\"switchNode(" + i + ")\" class='projectButton' id=\"node" + i + "\"> " + "[node] " + data[i] + "</h4>";
|
||||
}
|
||||
$("#nodesArea").html(html);
|
||||
printTransferLog();
|
||||
}
|
||||
|
||||
var switchNode = function(i) {
|
||||
Global.currentNode = Global.nodes[i];
|
||||
$("#notice2").html("Choose node " + Global.currentNode + " to transfer.");
|
||||
|
||||
for(var j = 0;j < Global.nodes.length;j++){
|
||||
if(j == i){
|
||||
document.getElementById("node" + j).style.color="#a9423e";
|
||||
}
|
||||
else{
|
||||
document.getElementById("node" + j).style.color="black";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var transfer = function(i) {
|
||||
console.log("Global.currentNode=" + Global.currentNode);
|
||||
if(Global.currentNode == null){
|
||||
alert("Please choose node to transfer!");
|
||||
$("#notice2").html("Please choose a node to transfer!");
|
||||
return;
|
||||
}
|
||||
|
||||
//先将合约代码传过去并在选中的节点上启动
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var mode;
|
||||
switch(i){
|
||||
case 0 :
|
||||
mode = "memoryTransfer";
|
||||
//memory dump,fork
|
||||
|
||||
|
||||
break;
|
||||
case 1 :
|
||||
mode = "traceTransfer";
|
||||
break;
|
||||
case 2 :
|
||||
mode = "simpleTransfer";
|
||||
break;
|
||||
case 3 :
|
||||
mode = "fastTransfer";
|
||||
break;
|
||||
default:
|
||||
;
|
||||
}
|
||||
$("#notice2").html("Use mode " + mode + " to transfer!");
|
||||
|
||||
|
||||
/*
|
||||
var urlstr = "http://" + Global.currentNode + ":8080/SCIDE/CMManager?action=forkContract&contractID=" + Global.contractID + "&method="
|
||||
$.ajax({
|
||||
url : urlstr,
|
||||
dataType : "json"
|
||||
}).done(function(result) {
|
||||
Global.result = result;
|
||||
|
||||
if(result.data == "success"){
|
||||
console.log("[transfer] test success!");
|
||||
$("#notice2").html("Contract " + Global.contractID + " has transferred successfully.");
|
||||
printTransferLog();
|
||||
}
|
||||
else{
|
||||
alert("Transfer error : " + result.data);
|
||||
$("#notice2").html(result.data);
|
||||
printTransferLog();
|
||||
}
|
||||
|
||||
|
||||
//从这继续写
|
||||
printTransferLog();
|
||||
});
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/*
|
||||
var host = Global.currentNode;
|
||||
if(host == "127.0.0.1"){
|
||||
host += ":18000"
|
||||
}else{
|
||||
host += ":8080"
|
||||
}
|
||||
var wsUrl = getControlWsUrl(host);
|
||||
console.log("[transfer] wsUrl=" + wsUrl);
|
||||
|
||||
var sock = new WebSocket(wsUrl);
|
||||
|
||||
var controller = createWssocket(wsUrl, function() {
|
||||
// onopen;
|
||||
var request = {};
|
||||
request.action = "forkContract";
|
||||
request.script = "empty";
|
||||
controller.send(JSON.stringify(request));
|
||||
}, transferHandler);
|
||||
*/
|
||||
}
|
||||
|
||||
var transferHandler = function(obj){
|
||||
console.log("[transferHandler]");
|
||||
printTransferLog();
|
||||
console.log(obj);
|
||||
var obj2 = JSON.parse(obj.data );
|
||||
console.log(obj2.data);
|
||||
}
|
||||
Reference in New Issue
Block a user