mirror of https://github.com/midoks/mdserver-web
parent
e11bbdf91c
commit
2419e39117
@ -0,0 +1,190 @@ |
|||||||
|
|
||||||
|
function str2Obj(str){ |
||||||
|
var data = {}; |
||||||
|
kv = str.split('&'); |
||||||
|
for(i in kv){ |
||||||
|
v = kv[i].split('='); |
||||||
|
data[v[0]] = v[1]; |
||||||
|
} |
||||||
|
return data; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
function pm2Post(method,args,callback){ |
||||||
|
|
||||||
|
var _args = null;
|
||||||
|
if (typeof(args) == 'string'){ |
||||||
|
_args = JSON.stringify(str2Obj(args)); |
||||||
|
} else { |
||||||
|
_args = JSON.stringify(args); |
||||||
|
} |
||||||
|
|
||||||
|
var loadT = layer.msg('正在获取中...', { icon: 16, time: 0, shade: 0.3 }); |
||||||
|
$.post('/plugins/run', {name:'pm2', func:method, args:_args}, function(data) { |
||||||
|
layer.close(loadT); |
||||||
|
if (!data.status){ |
||||||
|
layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']}); |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
if(typeof(callback) == 'function'){ |
||||||
|
callback(data); |
||||||
|
} |
||||||
|
},'json');
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function pm2List() { |
||||||
|
var con = '<div class="divtable" style="width:620px;">\ |
||||||
|
<input class="bt-input-text mr5" id="mmpath" name="path" type="text" value="" style="width:260px" placeholder="项目所在根目录">\ |
||||||
|
<span onclick="changePath(\'mmpath\')" class="glyphicon glyphicon-folder-open cursor mr20"></span>\ |
||||||
|
<input class="bt-input-text mr5" name="run" type="text" value="" style="width:150px" placeholder="启动文件名称">\ |
||||||
|
<input class="bt-input-text mr5" name="pname" type="text" value="" style="width:100px" placeholder="项目名称">\ |
||||||
|
<button class="btn btn-default btn-sm va0" onclick="addNode();">添加</button>\ |
||||||
|
<table class="table table-hover" style="margin-top: 10px; max-height: 380px; overflow: auto;">\ |
||||||
|
<thead>\ |
||||||
|
<tr><th>名称</th>\ |
||||||
|
<th>模式</th>\ |
||||||
|
<th>端口</th>\ |
||||||
|
<th>状态</th>\ |
||||||
|
<th>重启</th>\ |
||||||
|
<th>时间</th>\ |
||||||
|
<th>CPU</th>\ |
||||||
|
<th>内存</th>\ |
||||||
|
<th>目录</th>\ |
||||||
|
<th style="text-align: right;" width="150">操作</th></tr>\ |
||||||
|
</thead>\ |
||||||
|
<tbody id="pmlist"></tbody>\ |
||||||
|
</table>\ |
||||||
|
</div>'; |
||||||
|
|
||||||
|
$(".soft-man-con").html(con); |
||||||
|
|
||||||
|
|
||||||
|
pm2Post('list','', function(data){ |
||||||
|
var rdata = $.parseJSON(data.data); |
||||||
|
console.log(rdata); |
||||||
|
if (!rdata['status']){ |
||||||
|
layer.msg(rdata['msg'],{icon:2,time:2000,shade: [0.3, '#000']}); |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
var tbody = ''; |
||||||
|
var tmp = rdata['data']; |
||||||
|
for(var i=0;i<tmp.length;i++){ |
||||||
|
if(tmp[i].status != 'online'){ |
||||||
|
var opt = '<a href="javascript:nodeStart(\''+tmp[i].name+'\')" class="btlink">启动</a> | '; |
||||||
|
}else{ |
||||||
|
var opt = '<a href="javascript:nodeStop(\''+tmp[i].name+'\')" class="btlink">停止</a> | <a href="javascript:nodeRestart(\''+tmp[i].name+'\')" class="btlink">重启</a> | <a href="javascript:onekeyCodeSite(\''+tmp[i].name+'\','+tmp[i].port+',\''+tmp[i].path+'\')" class="btlink">映射</a> | '; |
||||||
|
} |
||||||
|
tmp[i].path = tmp[i].path.replace('//',''); |
||||||
|
|
||||||
|
var status = '<span style="color:rgb(92, 184, 92)" class="glyphicon glyphicon-play"></span>'; |
||||||
|
if(tmp[i].status != 'online'){ |
||||||
|
status = '<span style="color:rgb(255, 0, 0);" class="glyphicon glyphicon-pause"></span>'; |
||||||
|
} |
||||||
|
|
||||||
|
tbody += '<tr>\ |
||||||
|
<td>'+tmp[i].name+'</td>\ |
||||||
|
<td>'+tmp[i].mode+'</td>\ |
||||||
|
<td>'+tmp[i].port+'</td>\ |
||||||
|
<td>'+status+'</td>\ |
||||||
|
<td>'+tmp[i].restart+'</td>\ |
||||||
|
<td>'+tmp[i].uptime+'</td>\ |
||||||
|
<td>'+tmp[i].cpu+'</td>\ |
||||||
|
<td>'+tmp[i].mem+'</td>\ |
||||||
|
<td><span onclick="openPath(\''+tmp[i].path+'\')" class="btlink cursor mr20" title="'+tmp[i].path+'">打开</span></td>\ |
||||||
|
<td style="text-align: right;">\ |
||||||
|
'+opt+'<a href="javascript:delNode(\''+tmp[i].name+'\')" class="btlink">删除</a>\ |
||||||
|
</td>\ |
||||||
|
</tr>'; |
||||||
|
} |
||||||
|
|
||||||
|
$("#pmlist").html(tbody); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//取版本号列表
|
||||||
|
function getNodeVersions(){ |
||||||
|
var loadT = layer.msg('正在获取版本列表...',{icon:16,time:0,shade: [0.3, '#000']}); |
||||||
|
$.get('/plugin?action=a&s=Versions&name=pm2',function(versions){ |
||||||
|
layer.close(loadT); |
||||||
|
|
||||||
|
|
||||||
|
}); |
||||||
|
|
||||||
|
pm2Post('versions', '', function(data){ |
||||||
|
console.log(data); |
||||||
|
return; |
||||||
|
|
||||||
|
var opt = ''; |
||||||
|
for(var i=0;i<versions.list.length;i++){ |
||||||
|
if(versions.list[i] == versions.version){ |
||||||
|
opt += '<option value="'+versions.list[i]+'" selected="selected">'+versions.list[i]+'</option>'; |
||||||
|
}else{ |
||||||
|
opt += '<option value="'+versions.list[i]+'">'+versions.list[i]+'</option>'; |
||||||
|
} |
||||||
|
} |
||||||
|
var con = '<div class="divtable" style="width: 620px;">\ |
||||||
|
<span>当前版本</span><select style="margin-left: 5px;width:100px;" class="bt-input-text" name="versions">'+opt+'</select>\ |
||||||
|
<button style="margin-bottom: 3px;margin-left: 5px;" class="btn btn-success btn-sm" onclick="SetNodeVersion()">切换版本</button>\ |
||||||
|
<ul class="help-info-text c7 mtb15">\ |
||||||
|
<li>当前版本为<font style="color:red;">['+versions.version+']</font></li>\ |
||||||
|
<li>版本切换是全局的,切换版本后可能影响您正在运行的项目</li>\ |
||||||
|
</ul>\ |
||||||
|
</div>'; |
||||||
|
// $("#webEdit-con").html(con);
|
||||||
|
|
||||||
|
$(".soft-man-con").html(con); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
function addNode(){ |
||||||
|
var data = {path:$("input[name='path']").val(),pname:$("input[name='pname']").val(),run:$("input[name='run']").val()} |
||||||
|
if(!data.path || !data.pname || !data.run){ |
||||||
|
layer.msg('表单不完整,请检查!',{icon:2}); |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
pm2Post('add', data, function(data){ |
||||||
|
var rdata = $.parseJSON(data.data); |
||||||
|
layer.msg(rdata.msg,{icon:rdata.status?1:2}); |
||||||
|
pm2List(); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
function delNode(pname){ |
||||||
|
safeMessage('删除项目['+pname+']','删除['+pname+']项目后,该项目将无法被访问,继续吗?',function(){ |
||||||
|
var data = "pname="+pname; |
||||||
|
pm2Post('delete', data, function(data){ |
||||||
|
var rdata = $.parseJSON(data.data); |
||||||
|
layer.msg(rdata.msg,{icon:rdata.status?1:2}); |
||||||
|
pm2List(); |
||||||
|
}); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
function nodeStop(pname){ |
||||||
|
var data = 'pname=' + pname; |
||||||
|
pm2Post('stop', data, function(data){ |
||||||
|
var rdata = $.parseJSON(data.data); |
||||||
|
layer.msg(rdata.msg,{icon:rdata.status?1:2}); |
||||||
|
pm2List(); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
function nodeStart(pname){ |
||||||
|
var data = 'pname=' + pname; |
||||||
|
pm2Post('start', data, function(data){ |
||||||
|
var rdata = $.parseJSON(data.data); |
||||||
|
layer.msg(rdata.msg,{icon:rdata.status?1:2}); |
||||||
|
pm2List(); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
function onekeyCodeSite(codename, port, path){ |
||||||
|
} |
Loading…
Reference in new issue