From ecb922b3aed3c98ad20e6617449b2d957b9823af Mon Sep 17 00:00:00 2001 From: "Frank.R.Wu" Date: Mon, 21 Jun 2021 17:23:41 +0800 Subject: [PATCH] fix: filter killed contract processes in backend unless NodePortal calls listContractProcess --- js/NodeContractInstances.js | 999 ++++++++++++++++++------------------ js/NodePortal.js | 18 +- 2 files changed, 510 insertions(+), 507 deletions(-) diff --git a/js/NodeContractInstances.js b/js/NodeContractInstances.js index 7bd0501..4ca317f 100644 --- a/js/NodeContractInstances.js +++ b/js/NodeContractInstances.js @@ -1,555 +1,558 @@ -var loadContractInstances = function(event) { - console.log("loadContractInstances"+event); +var loadContractInstances = function (event) { + console.log("loadContractInstances" + event); - listContractProcess(); + listContractProcess(); }; -var listContractProcess = function(event) { - console.log("listContractProcess"+event); - setTimeout(function() { - var param = {}; - param.action = "listContractProcess"; +var listContractProcess = function (event) { + console.log("listContractProcess" + event); + setTimeout(function () { + var param = {}; + param.action = "listContractProcess"; - // param.data = event; + // param.data = event; + param.fromNodePortal = true; - global.wssocket.send(JSON.stringify(param)); - var request2 = {}; + global.wssocket.send(JSON.stringify(param)); + var request2 = {}; request2.action = "listLeakContractProcess"; global.wssocket.send(JSON.stringify(request2)); - }, 300); + }, 300); }; -var onListContractProcess1 = function(obj) { - console.log("+++++++++="+obj.data); - var table = JSON.parse(obj.data); - global.contractList = table; - drawContractInstanceStatusPie(table); - // drawContractInstanceTimesPie(table); - drawContractInstanceTypeTimesPie(table); - drawciTable(table); - console.log(table); - $("#selectContractInstance").html(""); - var x = document.getElementById("selectContractInstance"); - x.options.length = 0; - x.add(new Option("选择...", " ")); +var onListContractProcess1 = function (obj) { + console.log("+++++++++=" + obj.data); + var table = JSON.parse(obj.data); + global.contractList = table; + drawContractInstanceStatusPie(table); + // drawContractInstanceTimesPie(table); + drawContractInstanceTypeTimesPie(table); + drawciTable(table); + console.log(table); + $("#selectContractInstance").html(""); + var x = document.getElementById("selectContractInstance"); + x.options.length = 0; + x.add(new Option("选择...", " ")); - global.permissionNameMap = {}; - for (var i = 0; i < table.length; i++) { - if (table[i].contractStatus=="KILLED") { - continue; - } - var option = document.createElement("option"); - option.text = table[i].name; - console.log(table[i].name); - global.permissionNameMap[table[i].id] = table[i].contractPermission; - // option.value=table[i].id; - option.value = table[i].id; - x.add(option, null); - } + global.permissionNameMap = {}; + for (var i = 0; i < table.length; i++) { + if (table[i].contractStatus == "KILLED") { + continue; + } + var option = document.createElement("option"); + option.text = table[i].name; + console.log(table[i].name); + global.permissionNameMap[table[i].id] = table[i].contractPermission; + // option.value=table[i].id; + option.value = table[i].id; + x.add(option, null); + } }; -var drawciTable = function(table) { - if ($("#ciTabDiv").css("height") == "0px") { - console.log("drawciTabDiv: ignore"); - return; - } - var dtLang = { - "sProcessing" : "处理中...", - "lengthMenu" : '显示 项结果', - "sZeroRecords" : "没有匹配结果", - "sInfo" : "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项", - "sInfoEmpty" : "显示第 0 至 0 项结果,共 0 项", - "sInfoFiltered" : "(由 _MAX_ 项结果过滤)", - "sInfoPostFix" : "", - "sSearch" : "搜索:", - "sUrl" : "", - "sEmptyTable" : "表中数据为空", - "sLoadingRecords" : "载入中...", - "sInfoThousands" : ",", - "oPaginate" : { - "sFirst" : "首页", - "sPrevious" : "上页", - "sNext" : "下页", - "sLast" : "末页" - }, - "oAria" : { - "sSortAscending" : ": 以升序排列此列", - "sSortDescending" : ": 以降序排列此列" - } - }; - var tableHead = ""; - var tableTail = "
序号ID名称状态端口类型通讯共识统计次数流量内存管理
"; +var drawciTable = function (table) { + if ($("#ciTabDiv").css("height") == "0px") { + console.log("drawciTabDiv: ignore"); + return; + } + var dtLang = { + "sProcessing": "处理中...", + "lengthMenu": '显示 项结果', + "sZeroRecords": "没有匹配结果", + "sInfo": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项", + "sInfoEmpty": "显示第 0 至 0 项结果,共 0 项", + "sInfoFiltered": "(由 _MAX_ 项结果过滤)", + "sInfoPostFix": "", + "sSearch": "搜索:", + "sUrl": "", + "sEmptyTable": "表中数据为空", + "sLoadingRecords": "载入中...", + "sInfoThousands": ",", + "oPaginate": { + "sFirst": "首页", + "sPrevious": "上页", + "sNext": "下页", + "sLast": "末页" + }, + "oAria": { + "sSortAscending": ": 以升序排列此列", + "sSortDescending": ": 以降序排列此列" + } + }; + var tableHead = ""; + var tableTail = "
序号ID名称状态端口类型通讯共识统计次数流量内存管理
"; - console.log("drawciTable"); - var html = tableHead; - for (var i = 0; i < table.length; i++) { - html += ""; - html += (i + 1); - html += " "; - html += table[i].id; - html += " "; - html += "" + table[i].name + ""; - html += " "; - html += table[i].contractStatus; - html += " "; - html += table[i].port; - html += ""; - html += table[i].type; - html += " "; - html += table[i].networkType == 0?"TCP":"P2P"; - html += ""; - var consensusType; - switch(table[i].consensusType) { - case 0: - consensusType = "无"; - break; - case 1: - consensusType = "PBFT"; - break; - case 2: - consensusType = "RAFT"; - break; - case 3: - consensusType = "Single"; - break; - } - html += consensusType; - html += ""; - var responseType; - switch(table[i].responseType) { - case 0: - responseType = "ALL"; - break; - case 1: - responseType = "MOST"; - break; - case 2: - responseType = "FIRST"; - break; - } - html += responseType; - html += ""; - html += table[i].times; - table[i].port; - html += " "; - html += table[i].traffic; - html += " "; - html += table[i].storage; - html += " "; - html +="" - //table[i].resultCheck; - // html += " "; - // html += ""; - html += " "; - } - html += tableTail; - html = "
合约实例列表
"+html; - $("#ciTabDiv").html(html); + console.log("drawciTable"); + var html = tableHead; + for (var i = 0; i < table.length; i++) { + html += ""; + html += (i + 1); + html += " "; + html += table[i].id; + html += " "; + html += "
" + table[i].name + ""; + html += " "; + html += table[i].contractStatus; + html += " "; + html += table[i].port; + html += ""; + html += table[i].type; + html += " "; + html += table[i].networkType == 0 ? "TCP" : "P2P"; + html += ""; + var consensusType; + switch (table[i].consensusType) { + case 0: + consensusType = "无"; + break; + case 1: + consensusType = "PBFT"; + break; + case 2: + consensusType = "RAFT"; + break; + case 3: + consensusType = "Single"; + break; + } + html += consensusType; + html += ""; + var responseType; + switch (table[i].responseType) { + case 0: + responseType = "ALL"; + break; + case 1: + responseType = "MOST"; + break; + case 2: + responseType = "FIRST"; + break; + } + html += responseType; + html += ""; + html += table[i].times; + table[i].port; + html += " "; + html += table[i].traffic; + html += " "; + html += table[i].storage; + html += " "; + html += "" + //table[i].resultCheck; + // html += " "; + // html += ""; + html += " "; + } + html += tableTail; + html = "
合约实例列表
" + html; + $("#ciTabDiv").html(html); - $("#ciTabDivTab").DataTable( - { - "language" : dtLang, - "rowCallback" : function(row, data, displayNum, displayIndex, - dataIndex) { + $("#ciTabDivTab").DataTable( + { + "language": dtLang, + "rowCallback": function (row, data, displayNum, displayIndex, + dataIndex) { - }, - "headerCallback" : function(thead, data, start, end, display) { - $(thead).css("background", primaryColor); - $(thead).css("color", "white"); - $(thead).children().css("background", primaryColor); - $(thead).children().css("color", "white"); - }, - scrollCollapse : false, - paging : true, - pageLength : 10, - order : [ [ 0, 'desc' ] ], - "columnDefs" : [ - { - "targets" : 1, - "render" : function(data, type, row, meta) { - if (data.length > 8) - return "" - + data.substring(0, 8) - + " ..."; - else - return data; - } + }, + "headerCallback": function (thead, data, start, end, display) { + $(thead).css("background", primaryColor); + $(thead).css("color", "white"); + $(thead).children().css("background", primaryColor); + $(thead).children().css("color", "white"); + }, + scrollCollapse: false, + paging: true, + pageLength: 10, + order: [[0, 'desc']], + "columnDefs": [ + { + "targets": 1, + "render": function (data, type, row, meta) { + if (data.length > 8) + return "" + + data.substring(0, 8) + + " ..."; + else + return data; + } - },] - }); + },] + }); }; -var stopContractByID = function(contractID){ - $("#dialogBodyDiv").html("是否停止合约,ContractID:"+contractID); - showDialog("请确认",function(){ +var stopContractByID = function (contractID) { + $("#dialogBodyDiv").html("是否停止合约,ContractID:" + contractID); + showDialog("请确认", function () { var request = {}; - request.action = "killContractProcess"; - request.requestID = new Date().getTime() + ""; - request.id = contractID; - global.wssocket.send(JSON.stringify(request)); + request.action = "killContractProcess"; + request.requestID = new Date().getTime() + ""; + request.id = contractID; + global.wssocket.send(JSON.stringify(request)); }); }; -var drawContractInstanceStatusPie = function(table) { - if ($("#ciStatusPieDiv").css("height") == "0px") { - console.log("drawContractInstanceStatusPie: ignore"); - return; - } - $("#ciStatusPieDiv") - .html( - "
"); - var result = {}; - for (var i = 0; i < table.length; i++) { - var obj = table[i]; - if (result[obj.contractStatus] == undefined) { - result[obj.contractStatus] = 1; - } else - result[obj.contractStatus]++; - } - global.result = result; - var dataList = []; - var valDataList = []; - for ( var key in result) { - dataList.push(key); - var l = {}; - l.name = key - l.value = result[key]; - valDataList.push(l); - } +var drawContractInstanceStatusPie = function (table) { + if ($("#ciStatusPieDiv").css("height") == "0px") { + console.log("drawContractInstanceStatusPie: ignore"); + return; + } + $("#ciStatusPieDiv") + .html( + "
"); + var result = {}; + for (var i = 0; i < table.length; i++) { + var obj = table[i]; + if (result[obj.contractStatus] == undefined) { + result[obj.contractStatus] = 1; + } else + result[obj.contractStatus]++; + } + global.result = result; + var dataList = []; + var valDataList = []; + for (var key in result) { + dataList.push(key); + var l = {}; + l.name = key + l.value = result[key]; + valDataList.push(l); + } - var myChart = echarts.init($("#ciStatusPieDivCanv")[0], 'walden'); - var option222 = { - tooltip : { - trigger : 'item', - formatter : '{a}
{b}: {c} ({d}%)' - }, - legend : { - orient : 'vertical', - left : 10, - data : dataList - }, - series : [ { - name : '合约实例状态', - type : 'pie', - radius : [ '50%', '70%' ], - avoidLabelOverlap : false, - label : { - normal : { - show : false, - position : 'center' - }, - emphasis : { - show : true, - textStyle : { - fontSize : '15', - fontWeight : 'bold' - } - } - }, - labelLine : { - normal : { - show : false - } - }, - data : valDataList - } ] - }; - myChart.setOption(option222); + var myChart = echarts.init($("#ciStatusPieDivCanv")[0], 'walden'); + var option222 = { + tooltip: { + trigger: 'item', + formatter: '{a}
{b}: {c} ({d}%)' + }, + legend: { + orient: 'vertical', + left: 10, + data: dataList + }, + series: [{ + name: '合约实例状态', + type: 'pie', + radius: ['50%', '70%'], + avoidLabelOverlap: false, + label: { + normal: { + show: false, + position: 'center' + }, + emphasis: { + show: true, + textStyle: { + fontSize: '15', + fontWeight: 'bold' + } + } + }, + labelLine: { + normal: { + show: false + } + }, + data: valDataList + }] + }; + myChart.setOption(option222); }; -var drawContractInstanceTimesPie = function(table) { - if ($("#ciTimesPieDiv").css("height") == "0px") { - console.log("drawContractInstanceTimesPie: ignore"); - return; - } - $("#ciTimesPieDiv") - .html( - "
"); - var result = {}; - for (var i = 0; i < table.length; i++) { - var obj = table[i]; - result[obj.name] = obj.times; - } - global.result = result; - var dataList = []; - var valDataList = []; - for ( var key in result) { - dataList.push(key); - var l = {}; - l.name = key - l.value = result[key]; - valDataList.push(l); - } +var drawContractInstanceTimesPie = function (table) { + if ($("#ciTimesPieDiv").css("height") == "0px") { + console.log("drawContractInstanceTimesPie: ignore"); + return; + } + $("#ciTimesPieDiv") + .html( + "
"); + var result = {}; + for (var i = 0; i < table.length; i++) { + var obj = table[i]; + result[obj.name] = obj.times; + } + global.result = result; + var dataList = []; + var valDataList = []; + for (var key in result) { + dataList.push(key); + var l = {}; + l.name = key + l.value = result[key]; + valDataList.push(l); + } - var myChart = echarts.init($("#ciTimesPieDivCanv")[0], 'walden'); + var myChart = echarts.init($("#ciTimesPieDivCanv")[0], 'walden'); - var option222 = { - tooltip : { - trigger : 'item', - formatter : '{a}
{b}: {c} ({d}%)' - }, - legend : { - orient : 'vertical', - left : 10, - data : dataList - }, - series : [ { - name : '实例调用次数', - type : 'pie', - radius : [ '50%', '70%' ], - avoidLabelOverlap : false, - label : { - normal : { - show : false, - position : 'center' - }, - emphasis : { - show : true, - textStyle : { - fontSize : '15', - fontWeight : 'bold' - } - } - }, - labelLine : { - normal : { - show : false - } - }, - data : valDataList - } ] - }; - myChart.setOption(option222); + var option222 = { + tooltip: { + trigger: 'item', + formatter: '{a}
{b}: {c} ({d}%)' + }, + legend: { + orient: 'vertical', + left: 10, + data: dataList + }, + series: [{ + name: '实例调用次数', + type: 'pie', + radius: ['50%', '70%'], + avoidLabelOverlap: false, + label: { + normal: { + show: false, + position: 'center' + }, + emphasis: { + show: true, + textStyle: { + fontSize: '15', + fontWeight: 'bold' + } + } + }, + labelLine: { + normal: { + show: false + } + }, + data: valDataList + }] + }; + myChart.setOption(option222); }; -var changeContractInstance = function(obj) { - console.log(obj); - global.contractInstance = obj; +var changeContractInstance = function (obj) { + console.log(obj); + global.contractInstance = obj; - console.log(typeof(obj)); - showPermissionList(global.contractInstance); + console.log(typeof (obj)); + showPermissionList(global.contractInstance); - var contract; - for (var i = 0; i < global.contractList.length; i++) { - if (global.contractList[i].id == obj) { - contract = global.contractList[i]; - global.instance = contract; - global.instanceName = contract.name; - global.instanceSequencing = contract.type; - global.useP2P = contract.useP2P; - listMemoryFiles(contract.name); - getSyncType(contract.name); - break; - } - } + var contract; + for (var i = 0; i < global.contractList.length; i++) { + if (global.contractList[i].id == obj) { + contract = global.contractList[i]; + global.instance = contract; + global.instanceName = contract.name; + global.instanceSequencing = contract.type; + global.useP2P = contract.useP2P; + listMemoryFiles(contract.name); + getSyncType(contract.name); + break; + } + } - $("#selectContractFunction").html(""); - var x = document.getElementById("selectContractFunction"); - x.options.length = 0; - x.add(new Option("选择方法...", " ")); - console.log("contract ", contract); - for (var i = 0; i < contract.exportedFunctions.length; i++) { - var option = document.createElement("option"); - option.text = contract.exportedFunctions[i].functionName; - option.value = contract.exportedFunctions[i].functionName; - x.add(option, null); - } + $("#selectContractFunction").html(""); + var x = document.getElementById("selectContractFunction"); + x.options.length = 0; + x.add(new Option("选择方法...", " ")); + console.log("contract ", contract); + for (var i = 0; i < contract.exportedFunctions.length; i++) { + var option = document.createElement("option"); + option.text = contract.exportedFunctions[i].functionName; + option.value = contract.exportedFunctions[i].functionName; + x.add(option, null); + } }; -var changeMemeryFiles = function(obj) { - console.log(obj); - global.memoryFile = obj; +var changeMemeryFiles = function (obj) { + console.log(obj); + global.memoryFile = obj; }; -var executeContractWithDynamicResult = function() { - console.log("executeContractWithDynamicResult"); - var request = {}; - request.action = "executeContract"; - request.requestID = new Date().getTime() + ""; - request.contractName = global.contractInstance; - request.sequencing = global.instanceSequencing; - request.useP2P = global.useP2P; - request.isDebug = executeContractAsDebug.checked; - var operation = $("#selectContractFunction")[0].value; - if (operation == " " && operation == undefined) { - myToast("执行合约", "请选择合约方法!"); - return; - } - request.arg = "{\"action\":\"" + operation + "\",\"arg\":\"" - + $("#arg")[0].value + "\"}"; - request.pubkey = global.sm2Key.publicKey; - request.withDyanmicAnalysis = true; - request.signature = sm2.doSignature(request.contractID + "|" + operation - + "|" + $("#arg")[0].value + "|" + global.sm2Key.publicKey, - global.sm2Key.privateKey,{hash:true,der:true}); - localStorage.setItem("persisArg", JSON.stringify(request)); - global.wssocket.send(JSON.stringify(request)); -}; - -var executeContract = function() { - var request = {}; - request.action = "executeContract"; - request.requestID = new Date().getTime() + ""; - request.contractID = global.contractInstance; - var operation = $("#selectContractFunction")[0].value; - if (operation == " " && operation == undefined) { - myToast("执行合约", "请选择合约方法!"); - return; - } - request.operation = operation; - request.arg = $("#arg")[0].value ; - request.pubkey = global.sm2Key.publicKey; +var executeContractWithDynamicResult = function () { + console.log("executeContractWithDynamicResult"); + var request = {}; + request.action = "executeContract"; + request.requestID = new Date().getTime() + ""; + request.contractName = global.contractInstance; + request.sequencing = global.instanceSequencing; + request.useP2P = global.useP2P; request.isDebug = executeContractAsDebug.checked; - console.log(request.arg); - request.signature = sm2.doSignature(request.contractID + "|" + operation - + "|" + $("#arg")[0].value + "|" + global.sm2Key.publicKey, - global.sm2Key.privateKey,{hash:true,der:true}); - localStorage.setItem("persisArg", JSON.stringify(request)); - global.wssocket.send(JSON.stringify(request)); + var operation = $("#selectContractFunction")[0].value; + if (operation == " " && operation == undefined) { + myToast("执行合约", "请选择合约方法!"); + return; + } + request.arg = "{\"action\":\"" + operation + "\",\"arg\":\"" + + $("#arg")[0].value + "\"}"; + request.pubkey = global.sm2Key.publicKey; + request.withDyanmicAnalysis = true; + request.signature = sm2.doSignature(request.contractID + "|" + operation + + "|" + $("#arg")[0].value + "|" + global.sm2Key.publicKey, + global.sm2Key.privateKey, {hash: true, der: true}); + localStorage.setItem("persisArg", JSON.stringify(request)); + global.wssocket.send(JSON.stringify(request)); }; -var onExecuteResult = function(obj) { - console.log("onExecuteResult obj.data", obj.data); - try { - var result = obj; - var styleTail = "
字符串格式"; - $("#responseStatus").html("执行状态:" + result.status); - if (result.analysis != undefined) { - $("#responseArea")[0].value = "执行结果:" + result.result + "\n动态分析结果:" - + result.analysis; - } else { - if (result.result instanceof Object){ - $("#responseArea")[0].value = JSON.stringify(result.result); - styleTail = "
JSON格式"; - } else - $("#responseArea")[0].value = result.result; - } - $("#responseID").html("请求ID:" + obj.responseID); - $("#responseTime").html("响应时间:" + obj.executeTime + ("ms")+styleTail); - } catch (e) { - $("#responseStatus").html("执行状态:Fail"); - $("#responseArea")[0].value = obj.data; - $("#responseID").html("请求ID:" + obj.responseID); - $("#responseTime").html("响应时间:" + obj.executeTime + ("ms")); - } +var executeContract = function () { + var request = {}; + request.action = "executeContract"; + request.requestID = new Date().getTime() + ""; + request.contractID = global.contractInstance; + var operation = $("#selectContractFunction")[0].value; + if (operation == " " && operation == undefined) { + myToast("执行合约", "请选择合约方法!"); + return; + } + request.operation = operation; + request.arg = $("#arg")[0].value; + request.pubkey = global.sm2Key.publicKey; + request.isDebug = executeContractAsDebug.checked; + console.log(request.arg); + request.signature = sm2.doSignature(request.contractID + "|" + operation + + "|" + $("#arg")[0].value + "|" + global.sm2Key.publicKey, + global.sm2Key.privateKey, {hash: true, der: true}); + localStorage.setItem("persisArg", JSON.stringify(request)); + global.wssocket.send(JSON.stringify(request)); +}; + +var onExecuteResult = function (obj) { + console.log("onExecuteResult obj.data", obj.data); + try { + var result = obj; + var styleTail = "
字符串格式"; + $("#responseStatus").html("执行状态:" + result.status); + if (result.analysis != undefined) { + $("#responseArea")[0].value = "执行结果:" + result.result + "\n动态分析结果:" + + result.analysis; + } else { + if (result.result instanceof Object) { + $("#responseArea")[0].value = JSON.stringify(result.result); + styleTail = "
JSON格式"; + } else + $("#responseArea")[0].value = result.result; + } + $("#responseID").html("请求ID:" + obj.responseID); + $("#responseTime").html("响应时间:" + obj.executeTime + ("ms") + styleTail); + } catch (e) { + $("#responseStatus").html("执行状态:Fail"); + $("#responseArea")[0].value = obj.data; + $("#responseID").html("请求ID:" + obj.responseID); + $("#responseTime").html("响应时间:" + obj.executeTime + ("ms")); + } }; - var onHashResult = function(obj) { $("#hashResult").html("数链指纹:" + obj.data); }; +var onHashResult = function (obj) { + $("#hashResult").html("数链指纹:" + obj.data); +}; -var drawCPTable = function(table) { +var drawCPTable = function (table) { console.log("drawCPTable"); global.contractprocess = table.data; - if ($("#ciTabDiv").css("height") == "0px") { - console.log("drawciTabDiv: ignore"); - return; - } - var dtLang = { - "sProcessing" : "处理中...", - "lengthMenu" : '显示 项结果', - "sZeroRecords" : "没有匹配结果", - "sInfo" : "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项", - "sInfoEmpty" : "显示第 0 至 0 项结果,共 0 项", - "sInfoFiltered" : "(由 _MAX_ 项结果过滤)", - "sInfoPostFix" : "", - "sSearch" : "搜索:", - "sUrl" : "", - "sEmptyTable" : "表中数据为空", - "sLoadingRecords" : "载入中...", - "sInfoThousands" : ",", - "oPaginate" : { - "sFirst" : "首页", - "sPrevious" : "上页", - "sNext" : "下页", - "sLast" : "末页" - }, - "oAria" : { - "sSortAscending" : ": 以升序排列此列", - "sSortDescending" : ": 以降序排列此列" - } - }; - var tableHead = ""; - var tableTail = "
序号PID是否泄漏启动时间CPUUserCPUSyssresidentmemory管理
"; + if ($("#ciTabDiv").css("height") == "0px") { + console.log("drawciTabDiv: ignore"); + return; + } + var dtLang = { + "sProcessing": "处理中...", + "lengthMenu": '显示 项结果', + "sZeroRecords": "没有匹配结果", + "sInfo": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项", + "sInfoEmpty": "显示第 0 至 0 项结果,共 0 项", + "sInfoFiltered": "(由 _MAX_ 项结果过滤)", + "sInfoPostFix": "", + "sSearch": "搜索:", + "sUrl": "", + "sEmptyTable": "表中数据为空", + "sLoadingRecords": "载入中...", + "sInfoThousands": ",", + "oPaginate": { + "sFirst": "首页", + "sPrevious": "上页", + "sNext": "下页", + "sLast": "末页" + }, + "oAria": { + "sSortAscending": ": 以升序排列此列", + "sSortDescending": ": 以降序排列此列" + } + }; + var tableHead = ""; + var tableTail = "
序号PID是否泄漏启动时间CPUUserCPUSyssresidentmemory管理
"; table = table.data; - console.log("drawciTable"); - var html = tableHead; - for (var i = 0; i < table.length; i++) { - html += ""; - html += (i + 1); - html += " "; - html += table[i].pid; - html += " "; - html += table[i].isLeak; + console.log("drawciTable"); + var html = tableHead; + for (var i = 0; i < table.length; i++) { + html += ""; + html += (i + 1); html += " "; - html += new Date(table[i].cpuStart).toLocaleString(); - html += " "; - html += table[i].cpuTotal; - html += " "; - html += table[i].cpuSys; - html += " "; - html += ((table[i].resident)/(1024*1024)).toFixed(2)+"MB"; - html += ""; - html += ((table[i].memsize)/(1024*1024)).toFixed(2)+"MB"; - html += " "; - html +="" - //table[i].resultCheck; - // html += " "; - // html += ""; - html += " "; - } - html += tableTail; - html = "
合约进程列表
"+html; - $("#cpTabDiv").html(html); + html += table[i].pid; + html += " "; + html += table[i].isLeak; + html += " "; + html += new Date(table[i].cpuStart).toLocaleString(); + html += " "; + html += table[i].cpuTotal; + html += " "; + html += table[i].cpuSys; + html += " "; + html += ((table[i].resident) / (1024 * 1024)).toFixed(2) + "MB"; + html += ""; + html += ((table[i].memsize) / (1024 * 1024)).toFixed(2) + "MB"; + html += " "; + html += "" + //table[i].resultCheck; + // html += " "; + // html += ""; + html += " "; + } + html += tableTail; + html = "
合约进程列表
" + html; + $("#cpTabDiv").html(html); - $("#cpTabDivTab").DataTable( - { - "language" : dtLang, - "rowCallback" : function(row, data, displayNum, displayIndex, - dataIndex) { + $("#cpTabDivTab").DataTable( + { + "language": dtLang, + "rowCallback": function (row, data, displayNum, displayIndex, + dataIndex) { - }, - "headerCallback" : function(thead, data, start, end, display) { - $(thead).css("background", primaryColor); - $(thead).css("color", "white"); - $(thead).children().css("background", primaryColor); - $(thead).children().css("color", "white"); - }, - scrollCollapse : false, - paging : true, - pageLength : 10, - order : [ [ 0, 'desc' ] ], - "columnDefs" : [ - { - "targets" : 1, - "render" : function(data, type, row, meta) { - if (data.length > 10) + }, + "headerCallback": function (thead, data, start, end, display) { + $(thead).css("background", primaryColor); + $(thead).css("color", "white"); + $(thead).children().css("background", primaryColor); + $(thead).children().css("color", "white"); + }, + scrollCollapse: false, + paging: true, + pageLength: 10, + order: [[0, 'desc']], + "columnDefs": [ + { + "targets": 1, + "render": function (data, type, row, meta) { + if (data.length > 10) // return "" // + data.substring(0, 10) // + " ..."; - return data; - else - return data; - } + return data; + else + return data; + } - },] - }); + },] + }); }; -var stopContractByPID = function(pid){ - $("#dialogBodyDiv").html("是否停止PID:"+pid); - showDialog("请确认",function(){ +var stopContractByPID = function (pid) { + $("#dialogBodyDiv").html("是否停止PID:" + pid); + showDialog("请确认", function () { var request = {}; - request.action = "killProcessByPID"; - request.pid = pid; + request.action = "killProcessByPID"; + request.pid = pid; global.wssocket.send(JSON.stringify(request)); var request2 = {}; request2.action = "listLeakContractProcess"; diff --git a/js/NodePortal.js b/js/NodePortal.js index 54b63e9..531af64 100644 --- a/js/NodePortal.js +++ b/js/NodePortal.js @@ -300,7 +300,7 @@ function onGetNodeSessionID(data) { global.session = data.session; global.wssocket.send(JSON.stringify({ pubKey: global.sm2Key.publicKey, - signature: sm2.doSignature(global.session, global.sm2Key.privateKey,{hash:true,der:true}), + signature: sm2.doSignature(global.session, global.sm2Key.privateKey, {hash: true, der: true}), action: "login" })); } @@ -498,25 +498,25 @@ function addNodeUnit(obj) { if (!global.units) { global.units = {}; } - var x=document.getElementById("selectUnits"); - for (i = 0; i < x.length; ++i){ - if (x.options[i].value == obj.key){ - return; + var x = document.getElementById("selectUnits"); + for (i = 0; i < x.length; ++i) { + if (x.options[i].value == obj.key) { + return; } } - var option=document.createElement("option"); + var option = document.createElement("option"); var type = obj.type; if (type == "TCP") { var at_ = obj.key.indexOf("_"); - var key = obj.key.substr(at_+1); + var key = obj.key.substr(at_ + 1); global.units[key] = obj.value; option.text = obj.type + ":" + key; } else { global.units[obj.key] = obj.value; - option.text = obj.type + ":" + obj.key + ":" +obj.value.length + "nodes"; + option.text = obj.type + ":" + obj.key + ":" + obj.value.length + "nodes"; } option.value = obj.key; - x.add(option,null); + x.add(option, null); }