You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
4.3 KiB

<%@page import="org.wdk.core.util.uString"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<title>指标系统报文调试</title>
<%@include file="/wdk/theme/je/module/public/common.jsp"%>
<script type="text/javascript">
<%
String data = (String)request.getAttribute("data");
%>
$(function(){
<%if(uString.isNotBlank(data)){%>
var info = Base64.decode('<%=data%>');
$('#rpt_content').val(format(info,false));
<%}%>
})
function debug(){
$.wait_open();
var rpt = $('#rpt_content').val();
$.cuajax({
url:'wdk?action=pf.report&method=report_debug',
//async:false,
data:{data:rpt,service_name:$('#service_name').val()},
success:function(data){
$('#result_content').val(format(data,false));
$.wait_close();
}
});
}
function doFormat(){
var rpt = $('#rpt_content').val();
$('#rpt_content').val(format(rpt,false));
}
function format(txt,compress/*是否为压缩模式*/){/* 格式化JSON源码(对象转换为JSON文本) */
var indentChar = ' ';
if(/^\s*$/.test(txt)){
alert('数据为空,无法格式化! ');
return;
}
try{var data=eval('('+txt+')');}
catch(e){
alert('数据源语法错误,格式化失败! 错误信息: '+e.description,'err');
return;
};
var draw=[],last=false,This=this,line=compress?'':'\n',nodeCount=0,maxDepth=0;
var notify=function(name,value,isLast,indent/*缩进*/,formObj){
nodeCount++;/*节点计数*/
for (var i=0,tab='';i<indent;i++ )tab+=indentChar;/* 缩进HTML */
tab=compress?'':tab;/*压缩模式忽略缩进*/
maxDepth=++indent;/*缩进递增并记录*/
if(value&&value.constructor==Array){/*处理数组*/
draw.push(tab+(formObj?('"'+name+'":'):'')+'['+line);/*缩进'[' 然后换行*/
for (var i=0;i<value.length;i++)
notify(i,value[i],i==value.length-1,indent,false);
draw.push(tab+']'+(isLast?line:(','+line)));/*缩进']'换行,若非尾元素则添加逗号*/
}else if(value&&typeof value=='object'){/*处理对象*/
draw.push(tab+(formObj?('"'+name+'":'):'')+'{'+line);/*缩进'{' 然后换行*/
var len=0,i=0;
for(var key in value)len++;
for(var key in value)notify(key,value[key],++i==len,indent,true);
draw.push(tab+'}'+(isLast?line:(','+line)));/*缩进'}'换行,若非尾元素则添加逗号*/
}else{
if(typeof value=='string')value='"'+value+'"';
draw.push(tab+(formObj?('"'+name+'":'):'')+value+(isLast?'':',')+line);
};
};
var isLast=true,indent=0;
notify('',data,isLast,indent,false);
return draw.join('');
}
</script>
<style type="text/css">
</style>
</head>
<body class="easyui-layout" data-options="fit:true">
<div title="报文调试" data-options="region:'north',border:false,split:true" class="page-title" style="overflow:hidden;height: 400px;">
<textarea id="rpt_content" style="width:100%;height:100%;"></textarea>
</div>
<div class="easyui-layout" data-options="region:'center',border:false">
<div data-options="region:'north',border:false" style="height: 30px;text-align: center">
服务名:<input type="text" id="service_name" name="service_name" value="metric_system"></input>
<a id="btn" href="javascript:void(0);" onclick="doFormat()" class="easyui-linkbutton" data-options="iconCls:'fa fa-cubes'">格式化</a>
<a id="btn" href="javascript:void(0);" onclick="debug()" class="easyui-linkbutton" data-options="iconCls:'fa fa-cubes'">调试</a>
</div>
<div data-options="region:'center',border:false" style="overflow:hidden;">
<textarea id="result_content" style="width:100%;height:100%;overflow:auto;">
</textarea>
</div>
</div>
</body>
</html>